Jelajahi Sumber

登录登出逻辑修改

zuypeng 1 tahun lalu
induk
melakukan
22e5730100

+ 20 - 1
src/components/login-bar/index.vue

@@ -9,7 +9,7 @@
 </template>
 <script setup lang="ts" name="loginBar">
 import {login} from "@/utils/auth";
-import {onLoad, onShow} from "@dcloudio/uni-app";
+import {onHide, onLoad, onShow} from "@dcloudio/uni-app";
 import {reactive} from "vue";
 
 const state= reactive({
@@ -20,8 +20,27 @@ onShow(()=>{
   let userData = getApp<any>().globalData.user;
   state.isLogin =!!(userData&&userData.id);
   console.log("login bar onLoad>>>>", userData, state.isLogin)
+  addListener();
 })
 
+onHide(()=>{
+  removeListener();
+})
+
+const addListener = () => {
+  uni.$on('login', function (data) {
+    state.isLogin = true;
+  })
+
+  uni.$on('logout', function (data) {
+    state.isLogin= false;
+  })
+}
+
+const removeListener = () => {
+  uni.$off('logout');
+  uni.$off('login');
+}
 
 const handleGetPhone = (e:any) => {
   console.log(e)

+ 2 - 2
src/components/tab-bar/index.vue

@@ -141,8 +141,8 @@ view {
   background-color: #ffffff;
 }
 .tabbar-container .center-item .item-top image{
-  width: 120% !important;
-  height: 120% !important;
+  width: 110% !important;
+  height: 110% !important;
 }
 .tabbar-container .tabbar-item .item-top image {
   width: 100%;

+ 6 - 1
src/pages-user/feedback/add.vue

@@ -38,10 +38,14 @@
         </uv-form-item>
 
         <uv-form-item label="平台答复" prop="content" v-if="state.mode==='detail'">
-          <uv-textarea required="true" height="120" v-model="state.ruleForm.replay" placeholder="平台答复" >
+          <uv-textarea required="true" height="120" v-model="state.ruleForm.replyContent" placeholder="平台答复" >
           </uv-textarea>
         </uv-form-item>
 
+        <uv-form-item label="平台答复" prop="content" v-if="state.mode==='detail'">
+          <uv-text>{{  fmtDateTime(state.ruleForm.replyTime)}}</uv-text>
+        </uv-form-item>
+
       </uv-form>
 
       <view class="w100 flex-inline flex-justify-center">
@@ -62,6 +66,7 @@
 import {reactive, ref} from "vue";
 import {onHide} from "@dcloudio/uni-app";
 import {body, formatUrl, upload} from "@/utils/https";
+import {fmtDateTime} from "@/utils/common";
 
 const popup_ref = ref()
 const feedback_form_ref = ref()

+ 1 - 1
src/pages-user/feedback/index.vue

@@ -11,7 +11,7 @@
             :note="item.createTime"
             v-for="(item, index) in state.feedbackList" :key="index">
           <template #footer>
-            <uv-tags text="已反馈" plain size="mini" type="warning"></uv-tags>
+            <uv-tags text="已反馈" plain size="mini" type="warning" v-if="item.replyContent"></uv-tags>
           </template>
         </uv-list-item>
       </uv-list>

+ 24 - 3
src/pages/index/index.vue

@@ -146,6 +146,11 @@ onShow(() => {
     isLogin.value = true;
     loadUserInfo();
   }else{
+    //主动退出的不自动登录
+    let manualLogout = getApp<any>().globalData.manualLogout;
+    if(manualLogout){
+      return;
+    }
     tryLogin().then(token=>{
       getApp<any>().globalData.token = token;
       getApp<any>().globalData.isLogin = true;
@@ -168,16 +173,32 @@ onShow(() => {
     loadWashStationList();
   }
   loadBannerList();
-  uni.$on('loginEvent', function (data) {
-    isLogin.value = data.isLogin;
-  })
+
+  addListener();
 
 });
 
 onHide(() => {
   Object.assign(state, initState());
+  removeListener();
 })
 
+const addListener = () => {
+  uni.$on('login', function (data) {
+    isLogin.value = data.isLogin;
+  })
+
+  uni.$on('logout', function (data) {
+    isLogin.value = false;
+  })
+}
+
+const removeListener = () => {
+  uni.$off('logout');
+  uni.$off('login');
+}
+
+
 const loadBannerList = () => {
   get(`/banner`).then((res: any) => {
     state.bannerList = res;

+ 29 - 11
src/pages/user/index.vue

@@ -68,7 +68,7 @@
 </template>
 
 <script setup lang="ts">
-import {onLoad, onShow} from "@dcloudio/uni-app";
+import {onHide, onLoad, onShow} from "@dcloudio/uni-app";
 import {computed, ref} from "vue";
 import TabBar from "@/components/tab-bar/index.vue";
 import LoginBar from "@/components/login-bar/index.vue";
@@ -149,14 +149,7 @@ const toPage = (item: any) => {
 };
 
 const loginListen = () => {
-  uni.$on('loginEvent', function (data) {
-    isLogin.value = data.isLogin;
-    console.log("event>>>", data)
-    if (data.isLogin) {
-      user.value = getApp<any>().globalData.user;
-      console.log("event1111>>>", user.value)
-    }
-  })
+
 }
 
 const logoutUser = () => {
@@ -178,7 +171,7 @@ const logoutUser = () => {
             icon: "success",
             title: "已退出",
           });
-
+          getApp<any>().globalData.manualLogout = true;
           clearToken();
           setTimeout(() => {
             uni.exitMiniProgram()
@@ -198,6 +191,26 @@ onLoad(() => {
   };
 });
 
+const addListener = () => {
+  uni.$on('login', function (data) {
+    isLogin.value = data.isLogin;
+    console.log("event>>>", data)
+    if (data.isLogin) {
+      user.value = getApp<any>().globalData.user;
+      console.log("event1111>>>", user.value)
+    }
+  })
+
+  uni.$on('logout', function (data) {
+    isLogin.value = false;
+    user.value = {}
+  })
+}
+
+const removeListener = () => {
+  uni.$off('logout');
+  uni.$off('login');
+}
 
 onShow(() => {
   const userData = getApp<any>().globalData.user;
@@ -205,8 +218,13 @@ onShow(() => {
     isLogin.value = true;
     user.value = userData;
   }
-  loginListen();
+  // loginListen();
+  addListener();
 });
+
+onHide(()=>{
+  removeListener();
+})
 </script>
 
 <style lang="scss" scope>

+ 5 - 1
src/utils/auth.ts

@@ -148,9 +148,10 @@ export function checkLogin() {
 }
 
 export function loadUserInfo() {
+    getApp<any>().globalData.manualLogout = false;
     get(`/user/me`).then((res: any) => {
         getApp<any>().globalData.user = res;
-        uni.$emit('loginEvent', {isLogin: true})
+        uni.$emit('login', {isLogin: true})
     })
 }
 
@@ -213,5 +214,8 @@ export function setToken(token: string) {
 
 export function clearToken() {
     getApp<any>().globalData.token = "";
+    getApp<any>().globalData.isLong =false;
+    getApp<any>().globalData.user ={};
+    uni.$emit('logout')
     uni.removeStorageSync("token")
 }

+ 1 - 1
src/utils/https.ts

@@ -16,7 +16,7 @@ isDevelopment = e === "develop" || e === "trial";
 let env: string = isDevelopment ? "dev" : "prd";
 const apis = {
     dev: {
-        serverUrl: "https://dev-wash.kuaiyuman.cn/api",
+        serverUrl: "http://192.168.5.7:9099/api",
         fileUrl: "https://zyp-1258963180.cos.ap-guangzhou.myqcloud.com/"
     },
     prd: {