update: 修复缓存登录态存储问题

This commit is contained in:
mixtan 2025-06-19 12:53:39 +08:00
parent de1a73ce47
commit 7c7dcc2480
5 changed files with 25 additions and 29 deletions

View File

@ -1,18 +1,20 @@
import { defineStore } from "pinia"; import { defineStore } from "pinia";
import { ref, onMounted } from "vue"; import { ref,reactive, onMounted } from "vue";
export const useUserStore = defineStore("user", () => { export const useUserStore = defineStore("user", () => {
const token = ref(""); const token = ref(localStorage.getItem("token")||"");
const isLoggedIn = ref(false); const isLoggedIn = ref(false);
const mobilePhone = ref(localStorage.getItem("mobilePhone")||"");
const setToken = (newToken: string) => { const setToken = (data:any) => {
token.value = newToken; token.value = data;
isLoggedIn.value = true; isLoggedIn.value = true;
const expiryTime = Date.now() + 31536000 * 1000; // 当前时间 + 1 年 const expiryTime = Date.now() + 31536000 * 1000; // 当前时间 + 1 年
localStorage.setItem("token", newToken); localStorage.setItem("token", data);
localStorage.setItem("tokenExpiry", expiryTime.toString()); // 保存过期时间 localStorage.setItem("tokenExpiry", expiryTime.toString()); // 保存过期时间
}; };
const setMobilePhone = (phone: string) => { const setMobilePhone = (phone: string) => {
mobilePhone.value = phone;
localStorage.setItem("mobilePhone", phone); localStorage.setItem("mobilePhone", phone);
}; };
const removeMobilePhone=()=>{ const removeMobilePhone=()=>{
@ -25,6 +27,7 @@ export const useUserStore = defineStore("user", () => {
try { try {
token.value = ""; token.value = "";
isLoggedIn.value = false; isLoggedIn.value = false;
localStorage.removeItem("userInfo");
localStorage.removeItem("token"); localStorage.removeItem("token");
localStorage.removeItem("tokenExpiry"); // 删除过期时间 localStorage.removeItem("tokenExpiry"); // 删除过期时间
} catch (error) { } catch (error) {
@ -65,6 +68,7 @@ export const useUserStore = defineStore("user", () => {
return { return {
token, token,
isLoggedIn, isLoggedIn,
mobilePhone,
setToken, setToken,
clearToken, clearToken,
setMobilePhone, setMobilePhone,

View File

@ -100,26 +100,18 @@ const userStore = useUserStore();
// userStore // userStore
const isLoggedIn = ref(userStore.isLoggedIn); const isLoggedIn = ref(userStore.isLoggedIn);
const mobile = ref("");
const approval_status = ref(-1); const approval_status = ref(-1);
const token = ref(userStore.token);
const mobile = ref(userStore.mobilePhone);
watch(userStore, (newVal)=>{
token.value = newVal.token
mobile.value = newVal.mobilePhone.replace(/(^\d{3})(\d+)(\d{4})/g, "$1****$2")
isLoggedIn.value = !!token.value;
})
// token // token
onMounted(() => { onMounted(() => {
const storedToken = localStorage.getItem("token");
const mobilePhone = localStorage.getItem("mobilePhone");
console.log(mobilePhone);
if (mobilePhone) {
mobile.value = mobilePhone.replace(/(^\d{3})(\d+)(\d{4})/g, "$1****$2");
}
if (storedToken) {
userStore.setToken(storedToken); // token token
}
isLoggedIn.value = userStore.isLoggedIn; //
getApproval_status().then((res) => { getApproval_status().then((res) => {
if (res.code === 0 && res.status === 200) { if (res.code === 0 && res.status === 200) {
approval_status.value = res.data.approval_status; approval_status.value = res.data.approval_status;

View File

@ -81,7 +81,7 @@
</template> </template>
<script lang="ts" setup> <script lang="ts" setup>
import { useTransition } from "@vueuse/core"; import { useTransition } from "@vueuse/core";
import { ref, onMounted, defineEmits } from "vue"; import { ref, onMounted, defineEmits, watch } from "vue";
import { Promotion, Download } from "@element-plus/icons-vue"; import { Promotion, Download } from "@element-plus/icons-vue";
import { ElMessage } from 'element-plus' import { ElMessage } from 'element-plus'
import { getApproval_status } from "@/api/login"; import { getApproval_status } from "@/api/login";
@ -92,7 +92,7 @@ import { useUserStore } from "@/stores/userStore";
const router = useRouter(); const router = useRouter();
const userStore = useUserStore(); const userStore = useUserStore();
const isLoggedIn = ref(userStore.isLoggedIn); const isLoggedIn = ref(!!userStore.token);
const approval_status = ref(-1); const approval_status = ref(-1);
const businessman = ref(0); const businessman = ref(0);
const product = ref(0); const product = ref(0);

View File

@ -326,19 +326,19 @@ const applyFormData = reactive({
bank_image: "", bank_image: "",
email: "", email: "",
}); });
const isLoggedIn = ref(userStore.isLoggedIn); const isLoggedIn = ref(!!userStore.token);
const license_type = ref('1') const license_type = ref(1)
const optionsPermitType = [ const optionsPermitType = [
{ {
value: "1", value: 1,
label: "无需特殊资质", label: "无需特殊资质",
}, },
{ {
value: "2", value: 2,
label: "需许可证资质", label: "需许可证资质",
}, },
{ {
value: "3", value: 3,
label: "需特许证件资质", label: "需特许证件资质",
}, },
]; ];

View File

@ -778,7 +778,7 @@ const processData = () => {
}); });
}; };
const isLoggedIn = ref(userStore.isLoggedIn); const isLoggedIn = ref(!!userStore.token);
const active = ref(1); const active = ref(1);
const loading = ref(false); const loading = ref(false);
const formRef = ref(null); const formRef = ref(null);