diff --git a/src/router/index.ts b/src/router/index.ts index 91b04f1..bef7deb 100644 --- a/src/router/index.ts +++ b/src/router/index.ts @@ -90,7 +90,7 @@ router.beforeEach((to, from) => { } if (to.name === "userManage") { const userStore = useUserStore(); - if (userStore.user?.role !== 1) { + if (userStore.currUser.role !== 1) { return { name: "graphite" }; } } diff --git a/src/stores/user.ts b/src/stores/user.ts index f62f9e3..36aa011 100644 --- a/src/stores/user.ts +++ b/src/stores/user.ts @@ -9,6 +9,10 @@ export const useUserStore = defineStore("user", () => { user.value = usr; }; + const currUser = computed(() => { + return user.value || (JSON.parse(sessionStorage.getItem("user") || "{}") as User); + }); + const userList = ref(); const setUserList = (users: User[]) => { userList.value = users; @@ -24,6 +28,6 @@ export const useUserStore = defineStore("user", () => { userList.value || [] ); }); - - return { user, setUser, userList, setUserList, userIdMap }; + + return { currUser, setUser, userList, setUserList, userIdMap }; }); diff --git a/src/views/components/Header.vue b/src/views/components/Header.vue index d17a4e3..3dda297 100644 --- a/src/views/components/Header.vue +++ b/src/views/components/Header.vue @@ -1,203 +1,215 @@ \ No newline at end of file +@use "@/assets/style/mixin.scss" as *; +.header { + display: flex; + align-items: center; + background: #f6f6f6; + padding: 0 20px; + height: var(--headerHeight); + .header_logo { + display: flex; + font-size: 1.125rem; + align-items: center; + width: 21.875rem; + color: #8799ab; + gap: 5px; + padding-left: 1.5625rem; + + .logo { + height: 2.75rem; + width: 2.625rem; + } + } + + .header_time { + min-width: 11.875rem; + height: 2.5rem; + // font-size: .875rem; + display: flex; + align-items: center; + margin-left: auto; + background: white; + justify-content: center; + border-radius: 10px; + } + + .header_ins { + display: flex; + align-items: center; + border-radius: 5px; + width: 13.875rem; + height: 2.5rem; + background: #ffffff; + } + + .header_container { + margin-left: 3.125rem; + display: flex; + align-items: center; + border-radius: 5px; + width: 15.625rem; + height: 2.5rem; + background: #ffffff; + .waste_status { + padding: 5px 5px; + width: 75%; + } + + .waste_detail { + display: flex; + justify-content: flex-end; + width: 40%; + } + } + + .header_user { + display: flex; + align-items: center; + justify-content: flex-end; + gap: 5px; + margin-left: 0.9375rem; + } + + .user_name { + font-size: 1rem; + color: #393f46; + } + + .user_opt { + width: 10rem; + height: 6.25rem; + position: absolute; + top: 3rem; + background: #ffffff; + + .updatePwd { + color: #323233; + font-size: 1.125rem; + display: flex; + justify-content: center; + margin-top: 1.5rem; + gap: 15px; + } + + .login_out { + color: #323233; + font-size: 1.125rem; + display: flex; + justify-content: center; + margin-top: 0.5rem; + gap: 15px; + } + } +} + +.circle { + width: 0.9375rem; + height: 0.9375rem; + background-color: green; + border-radius: 50%; + margin-left: 0.3125rem; +} + +:deep(.van-dropdown-menu__bar) { + background-color: #1871f8; + border-radius: 5px; + height: 0.1rem; + width: 2.875rem; + .van-ellipsis { + color: white; + } +} + +:deep(.van-dropdown-item__content) { + width: 4.75rem; + margin-left: 5.375rem; +} + +.text_size { + font-size: 1rem; + padding-right: 5px; +} + diff --git a/src/views/components/Time.vue b/src/views/components/Time.vue new file mode 100644 index 0000000..21e35e5 --- /dev/null +++ b/src/views/components/Time.vue @@ -0,0 +1,47 @@ + + + + + diff --git a/src/views/components/UpdatePwd.vue b/src/views/components/UpdatePwd.vue index 48f6359..8e8c2c9 100644 --- a/src/views/components/UpdatePwd.vue +++ b/src/views/components/UpdatePwd.vue @@ -105,7 +105,7 @@ align-items: center; border-radius: 10px; margin-left: 0.5rem; - border: 3px solid #1989FA; + border: 1px solid #1989FA; color: #1989FA; } } diff --git a/src/views/components/menu.ts b/src/views/components/menu.ts index 747dba0..a688834 100644 --- a/src/views/components/menu.ts +++ b/src/views/components/menu.ts @@ -94,7 +94,7 @@ const menuIcon = [ const userStore = useUserStore(); export function getMenus() { - if (userStore.user && userStore.user.role === 1) { + if (userStore.currUser.role === 1) { return menuIcon; } else { return menuIcon.filter(m => m.path !== "/userManage"); diff --git a/src/views/expeRecord/components/ExpeDetail.vue b/src/views/expeRecord/components/ExpeDetail.vue index cd5c687..31f3bfe 100644 --- a/src/views/expeRecord/components/ExpeDetail.vue +++ b/src/views/expeRecord/components/ExpeDetail.vue @@ -10,8 +10,8 @@ v-for="step in record.steps" :key="step.id" class="h-10 flex items-center text-xs pr-3 text-[#6e6e6e] border-b border-b-[#f8f8f8]"> -

{{ record.startTime }}

-

{{ record.name }}

+

{{ step.startTime }}

+

{{ step.stepDescription }}

diff --git a/src/views/login/index.vue b/src/views/login/index.vue index 0d1756f..95986cc 100644 --- a/src/views/login/index.vue +++ b/src/views/login/index.vue @@ -62,11 +62,11 @@ const formRef = ref(); const rules = { username: [ { required: true, message: "请输入用户名", trigger: "blur" }, - { min: 3, max: 10, message: "长度在 3 到 10 个字符", trigger: "blur" }, + { min: 3, max: 20, message: "长度在 3 到 20 个字符", trigger: "blur" }, ], password: [ { required: true, message: "请输入密码", trigger: "blur" }, - { min: 3, max: 10, message: "长度在 3 到 10 个字符", trigger: "blur" }, + { min: 3, max: 20, message: "长度在 3 到 20 个字符", trigger: "blur" }, ] } @@ -87,6 +87,7 @@ const loginHandle = () => { if (response.success) { const { username, nickname, role } = response.data; userStore.setUser({ username, nickname, role } as User); + sessionStorage.setItem("user", JSON.stringify({ username, nickname, role })) } await router.push("/home"); loading.value = false; diff --git a/src/views/login/index1.vue b/src/views/login/index1.vue deleted file mode 100644 index 2536a69..0000000 --- a/src/views/login/index1.vue +++ /dev/null @@ -1,193 +0,0 @@ - - - - -