侧边栏1

This commit is contained in:
妖姐 2024-03-10 18:15:40 +08:00
parent dd177a36ec
commit 79e92352a7
3 changed files with 163 additions and 88 deletions

137
package-lock.json generated
View File

@ -817,49 +817,49 @@
} }
}, },
"node_modules/@vue/compiler-core": { "node_modules/@vue/compiler-core": {
"version": "3.4.15", "version": "3.3.11",
"resolved": "https://mirrors.cloud.tencent.com/npm/@vue/compiler-core/-/compiler-core-3.4.15.tgz", "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.3.11.tgz",
"integrity": "sha512-XcJQVOaxTKCnth1vCxEChteGuwG6wqnUHxAm1DO3gCz0+uXKaJNx8/digSz4dLALCy8n2lKq24jSUs8segoqIw==", "integrity": "sha512-h97/TGWBilnLuRaj58sxNrsUU66fwdRKLOLQ9N/5iNDfp+DZhYH9Obhe0bXxhedl8fjAgpRANpiZfbgWyruQ0w==",
"dependencies": { "dependencies": {
"@babel/parser": "^7.23.6", "@babel/parser": "^7.23.5",
"@vue/shared": "3.4.15", "@vue/shared": "3.3.11",
"entities": "^4.5.0",
"estree-walker": "^2.0.2", "estree-walker": "^2.0.2",
"source-map-js": "^1.0.2" "source-map-js": "^1.0.2"
} }
}, },
"node_modules/@vue/compiler-dom": { "node_modules/@vue/compiler-dom": {
"version": "3.4.15", "version": "3.3.11",
"resolved": "https://mirrors.cloud.tencent.com/npm/@vue/compiler-dom/-/compiler-dom-3.4.15.tgz", "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.3.11.tgz",
"integrity": "sha512-wox0aasVV74zoXyblarOM3AZQz/Z+OunYcIHe1OsGclCHt8RsRm04DObjefaI82u6XDzv+qGWZ24tIsRAIi5MQ==", "integrity": "sha512-zoAiUIqSKqAJ81WhfPXYmFGwDRuO+loqLxvXmfUdR5fOitPoUiIeFI9cTTyv9MU5O1+ZZglJVTusWzy+wfk5hw==",
"dependencies": { "dependencies": {
"@vue/compiler-core": "3.4.15", "@vue/compiler-core": "3.3.11",
"@vue/shared": "3.4.15" "@vue/shared": "3.3.11"
} }
}, },
"node_modules/@vue/compiler-sfc": { "node_modules/@vue/compiler-sfc": {
"version": "3.4.15", "version": "3.3.11",
"resolved": "https://mirrors.cloud.tencent.com/npm/@vue/compiler-sfc/-/compiler-sfc-3.4.15.tgz", "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.3.11.tgz",
"integrity": "sha512-LCn5M6QpkpFsh3GQvs2mJUOAlBQcCco8D60Bcqmf3O3w5a+KWS5GvYbrrJBkgvL1BDnTp+e8q0lXCLgHhKguBA==", "integrity": "sha512-U4iqPlHO0KQeK1mrsxCN0vZzw43/lL8POxgpzcJweopmqtoYy9nljJzWDIQS3EfjiYhfdtdk9Gtgz7MRXnz3GA==",
"dependencies": { "dependencies": {
"@babel/parser": "^7.23.6", "@babel/parser": "^7.23.5",
"@vue/compiler-core": "3.4.15", "@vue/compiler-core": "3.3.11",
"@vue/compiler-dom": "3.4.15", "@vue/compiler-dom": "3.3.11",
"@vue/compiler-ssr": "3.4.15", "@vue/compiler-ssr": "3.3.11",
"@vue/shared": "3.4.15", "@vue/reactivity-transform": "3.3.11",
"@vue/shared": "3.3.11",
"estree-walker": "^2.0.2", "estree-walker": "^2.0.2",
"magic-string": "^0.30.5", "magic-string": "^0.30.5",
"postcss": "^8.4.33", "postcss": "^8.4.32",
"source-map-js": "^1.0.2" "source-map-js": "^1.0.2"
} }
}, },
"node_modules/@vue/compiler-ssr": { "node_modules/@vue/compiler-ssr": {
"version": "3.4.15", "version": "3.3.11",
"resolved": "https://mirrors.cloud.tencent.com/npm/@vue/compiler-ssr/-/compiler-ssr-3.4.15.tgz", "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.3.11.tgz",
"integrity": "sha512-1jdeQyiGznr8gjFDadVmOJqZiLNSsMa5ZgqavkPZ8O2wjHv0tVuAEsw5hTdUoUW4232vpBbL/wJhzVW/JwY1Uw==", "integrity": "sha512-Zd66ZwMvndxRTgVPdo+muV4Rv9n9DwQ4SSgWWKWkPFebHQfVYRrVjeygmmDmPewsHyznCNvJ2P2d6iOOhdv8Qg==",
"dependencies": { "dependencies": {
"@vue/compiler-dom": "3.4.15", "@vue/compiler-dom": "3.3.11",
"@vue/shared": "3.4.15" "@vue/shared": "3.3.11"
} }
}, },
"node_modules/@vue/devtools-api": { "node_modules/@vue/devtools-api": {
@ -868,48 +868,60 @@
"integrity": "sha512-+KpckaAQyfbvshdDW5xQylLni1asvNSGme1JFs8I1+/H5pHEhqUKMEQD/qn3Nx5+/nycBq11qAEi8lk+LXI2dA==" "integrity": "sha512-+KpckaAQyfbvshdDW5xQylLni1asvNSGme1JFs8I1+/H5pHEhqUKMEQD/qn3Nx5+/nycBq11qAEi8lk+LXI2dA=="
}, },
"node_modules/@vue/reactivity": { "node_modules/@vue/reactivity": {
"version": "3.4.15", "version": "3.3.11",
"resolved": "https://mirrors.cloud.tencent.com/npm/@vue/reactivity/-/reactivity-3.4.15.tgz", "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.3.11.tgz",
"integrity": "sha512-55yJh2bsff20K5O84MxSvXKPHHt17I2EomHznvFiJCAZpJTNW8IuLj1xZWMLELRhBK3kkFV/1ErZGHJfah7i7w==", "integrity": "sha512-D5tcw091f0nuu+hXq5XANofD0OXnBmaRqMYl5B3fCR+mX+cXJIGNw/VNawBqkjLNWETrFW0i+xH9NvDbTPVh7g==",
"dependencies": { "dependencies": {
"@vue/shared": "3.4.15" "@vue/shared": "3.3.11"
}
},
"node_modules/@vue/reactivity-transform": {
"version": "3.3.11",
"resolved": "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.3.11.tgz",
"integrity": "sha512-fPGjH0wqJo68A0wQ1k158utDq/cRyZNlFoxGwNScE28aUFOKFEnCBsvyD8jHn+0kd0UKVpuGuaZEQ6r9FJRqCg==",
"dependencies": {
"@babel/parser": "^7.23.5",
"@vue/compiler-core": "3.3.11",
"@vue/shared": "3.3.11",
"estree-walker": "^2.0.2",
"magic-string": "^0.30.5"
} }
}, },
"node_modules/@vue/runtime-core": { "node_modules/@vue/runtime-core": {
"version": "3.4.15", "version": "3.3.11",
"resolved": "https://mirrors.cloud.tencent.com/npm/@vue/runtime-core/-/runtime-core-3.4.15.tgz", "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.3.11.tgz",
"integrity": "sha512-6E3by5m6v1AkW0McCeAyhHTw+3y17YCOKG0U0HDKDscV4Hs0kgNT5G+GCHak16jKgcCDHpI9xe5NKb8sdLCLdw==", "integrity": "sha512-g9ztHGwEbS5RyWaOpXuyIVFTschclnwhqEbdy5AwGhYOgc7m/q3NFwr50MirZwTTzX55JY8pSkeib9BX04NIpw==",
"dependencies": { "dependencies": {
"@vue/reactivity": "3.4.15", "@vue/reactivity": "3.3.11",
"@vue/shared": "3.4.15" "@vue/shared": "3.3.11"
} }
}, },
"node_modules/@vue/runtime-dom": { "node_modules/@vue/runtime-dom": {
"version": "3.4.15", "version": "3.3.11",
"resolved": "https://mirrors.cloud.tencent.com/npm/@vue/runtime-dom/-/runtime-dom-3.4.15.tgz", "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.3.11.tgz",
"integrity": "sha512-EVW8D6vfFVq3V/yDKNPBFkZKGMFSvZrUQmx196o/v2tHKdwWdiZjYUBS+0Ez3+ohRyF8Njwy/6FH5gYJ75liUw==", "integrity": "sha512-OlhtV1PVpbgk+I2zl+Y5rQtDNcCDs12rsRg71XwaA2/Rbllw6mBLMi57VOn8G0AjOJ4Mdb4k56V37+g8ukShpQ==",
"dependencies": { "dependencies": {
"@vue/runtime-core": "3.4.15", "@vue/runtime-core": "3.3.11",
"@vue/shared": "3.4.15", "@vue/shared": "3.3.11",
"csstype": "^3.1.3" "csstype": "^3.1.2"
} }
}, },
"node_modules/@vue/server-renderer": { "node_modules/@vue/server-renderer": {
"version": "3.4.15", "version": "3.3.11",
"resolved": "https://mirrors.cloud.tencent.com/npm/@vue/server-renderer/-/server-renderer-3.4.15.tgz", "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.3.11.tgz",
"integrity": "sha512-3HYzaidu9cHjrT+qGUuDhFYvF/j643bHC6uUN9BgM11DVy+pM6ATsG6uPBLnkwOgs7BpJABReLmpL3ZPAsUaqw==", "integrity": "sha512-AIWk0VwwxCAm4wqtJyxBylRTXSy1wCLOKbWxHaHiu14wjsNYtiRCSgVuqEPVuDpErOlRdNnuRgipQfXRLjLN5A==",
"dependencies": { "dependencies": {
"@vue/compiler-ssr": "3.4.15", "@vue/compiler-ssr": "3.3.11",
"@vue/shared": "3.4.15" "@vue/shared": "3.3.11"
}, },
"peerDependencies": { "peerDependencies": {
"vue": "3.4.15" "vue": "3.3.11"
} }
}, },
"node_modules/@vue/shared": { "node_modules/@vue/shared": {
"version": "3.4.15", "version": "3.3.11",
"resolved": "https://mirrors.cloud.tencent.com/npm/@vue/shared/-/shared-3.4.15.tgz", "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.3.11.tgz",
"integrity": "sha512-KzfPTxVaWfB+eGcGdbSf4CWdaXcGDqckoeXUh7SB3fZdEtzPCK2Vq9B/lRRL3yutax/LWITz+SwvgyOxz5V75g==" "integrity": "sha512-u2G8ZQ9IhMWTMXaWqZycnK4UthG1fA238CD+DP4Dm4WJi5hdUKKLg0RMRaRpDPNMdkTwIDkp7WtD0Rd9BH9fLw=="
}, },
"node_modules/acorn": { "node_modules/acorn": {
"version": "8.11.3", "version": "8.11.3",
@ -1351,17 +1363,6 @@
"integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==",
"dev": true "dev": true
}, },
"node_modules/entities": {
"version": "4.5.0",
"resolved": "https://mirrors.cloud.tencent.com/npm/entities/-/entities-4.5.0.tgz",
"integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==",
"engines": {
"node": ">=0.12"
},
"funding": {
"url": "https://github.com/fb55/entities?sponsor=1"
}
},
"node_modules/esbuild": { "node_modules/esbuild": {
"version": "0.19.12", "version": "0.19.12",
"resolved": "https://mirrors.cloud.tencent.com/npm/esbuild/-/esbuild-0.19.12.tgz", "resolved": "https://mirrors.cloud.tencent.com/npm/esbuild/-/esbuild-0.19.12.tgz",
@ -2699,15 +2700,15 @@
} }
}, },
"node_modules/vue": { "node_modules/vue": {
"version": "3.4.15", "version": "3.3.11",
"resolved": "https://mirrors.cloud.tencent.com/npm/vue/-/vue-3.4.15.tgz", "resolved": "https://registry.npmjs.org/vue/-/vue-3.3.11.tgz",
"integrity": "sha512-jC0GH4KkWLWJOEQjOpkqU1bQsBwf4R1rsFtw5GQJbjHVKWDzO6P0nWWBTmjp1xSemAioDFj1jdaK1qa3DnMQoQ==", "integrity": "sha512-d4oBctG92CRO1cQfVBZp6WJAs0n8AK4Xf5fNjQCBeKCvMI1efGQ5E3Alt1slFJS9fZuPcFoiAiqFvQlv1X7t/w==",
"dependencies": { "dependencies": {
"@vue/compiler-dom": "3.4.15", "@vue/compiler-dom": "3.3.11",
"@vue/compiler-sfc": "3.4.15", "@vue/compiler-sfc": "3.3.11",
"@vue/runtime-dom": "3.4.15", "@vue/runtime-dom": "3.3.11",
"@vue/server-renderer": "3.4.15", "@vue/server-renderer": "3.3.11",
"@vue/shared": "3.4.15" "@vue/shared": "3.3.11"
}, },
"peerDependencies": { "peerDependencies": {
"typescript": "*" "typescript": "*"

View File

@ -12,13 +12,61 @@
</svg> </svg>
</button> </button>
<div class="flex md:order-2 md:space-x-0 rtl:space-x-reverse"> <div class="flex md:order-2 md:space-x-0 rtl:space-x-reverse">
<a class="text-black focus:ring-4 focus:outline-none focus:ring-blue-300 font-medium rounded-lg text-center" href="/login">
<div v-if="isLoggedIn" class="flex items-center space-x-3">
<div class="flex items-center">
<span class="text-gray-900 mr-6 ">{{ username }}</span>
<img :src="avatar" alt="User Avatar" class="w-10 h-10 rounded-full " @click="showDrawer">
</div>
<a-drawer
v-model:open="open"
class="custom-class"
root-class-name="root-class-name"
:root-style="{ color: 'blue' }"
style="color: black"
placement="right"
@after-open-change="afterOpenChange"
>
<template #extra>
<div class="flex items-center space-x-2">
<img :src="avatar" alt="User Avatar" class="w-10 h-10 rounded-full">
<span class="text-gray-900">{{ username }}</span>
</div>
</template>
<div class="flex flex-col space-y-4 mb-4 ">
<span class="lg:hover:text-blue-700">我的项目</span>
<span class="lg:hover:text-blue-700" >消息</span>
<span class="lg:hover:text-blue-700">日报</span>
</div>
<div class="flex flex-col space-y-4">
<hr class="mb-2">
<span class="lg:hover:text-blue-700">我管理的</span>
<hr>
<span class=" lg:hover:text-blue-700">个人信息管理</span>
<div v-if="role === true" class="flex flex-col space-y-4">
<hr>
<span class=" lg:hover:text-blue-700" >我负责的</span>
</div>
</div>
</a-drawer>
</div>
<div v-else>
<a class="text-black focus:ring-4 focus:outline-none focus:ring-blue-300 font-medium rounded-lg text-center" href="/login">
登录 | 登录 |
</a> </a>
<a class="text-black focus:ring-4 focus:outline-none focus:ring-blue-300 font-medium rounded-lg pl-2 text-center" href="/register"> <a class="text-black focus:ring-4 focus:outline-none focus:ring-blue-300 font-medium rounded-lg pl-2 text-center" href="/register">
注册 注册
</a> </a>
</div> </div>
</div>
<div id="navbar-dropdown" class="w-full md:block md:w-auto"> <div id="navbar-dropdown" class="w-full md:block md:w-auto">
<ul class="flex flex-col font-medium p-4 md:p-0 mt-4 border border-gray-100 rounded-lg bg-gray-50 md:space-x-8 rtl:space-x-reverse md:flex-row md:mt-0 md:border-0 md:bg-white"> <ul class="flex flex-col font-medium p-4 md:p-0 mt-4 border border-gray-100 rounded-lg bg-gray-50 md:space-x-8 rtl:space-x-reverse md:flex-row md:mt-0 md:border-0 md:bg-white">
<li> <li>
@ -63,23 +111,50 @@
</div> </div>
</div> </div>
</nav> </nav>
</template> </template>
<script> <script setup>
export default { import {onMounted, reactive, ref} from "vue";
data() {
return { const isDropdownOpen = ref(false);
isDropdownOpen: false, const textColor = ref("black");
textColor: 'black', const isLoggedIn = ref(false);
}; const username =ref('') ;
}, const avatar =ref('')
methods: { const token = window.localStorage.getItem('token')
toggleDropdown() { const states = reactive({
this.isDropdownOpen = !this.isDropdownOpen; data:[],
},
changeColor() { })
// const role =ref(false)
this.textColor = 'blue'; function toggleDropdown(){
}, isDropdownOpen.value = !isDropdownOpen.value;
},
}
function changeColor() {
//
textColor.value = 'blue';
}
onMounted(() => {
//
// data
isLoggedIn.value = false;
username.value = 'John Doe';
avatar.value = 'https://img1.baidu.com/it/u=2005056479,139681251&fm=253&app=138&size=w931&n=0&f=JPEG&fmt=auto?sec=1710176400&t=4f32b862465c709f79c8fb80d3c0444b';
})
//
const open = ref(false);
const afterOpenChange = bool => {
console.log('open', bool);
}; };
const showDrawer = () => {
open.value = true;
};
</script> </script>

View File

@ -1,4 +1,3 @@
export default function getCurrentTimestamp() { export default function getCurrentTimestamp() {
const timestamp = new Date().getTime(); return new Date().getTime();
return timestamp;
} }