提交 ca028022 authored 作者: 王鹏飞's avatar 王鹏飞

chore: update

上级 34189075
差异被折叠。
...@@ -12,15 +12,15 @@ ...@@ -12,15 +12,15 @@
"deploy": "node ./deploy.js" "deploy": "node ./deploy.js"
}, },
"dependencies": { "dependencies": {
"@element-plus/icons-vue": "^2.0.6", "@element-plus/icons-vue": "^2.0.9",
"@tinymce/tinymce-vue": "^5.0.0", "@tinymce/tinymce-vue": "^5.0.0",
"@vueuse/core": "^9.1.0", "@vueuse/core": "^9.1.0",
"axios": "^0.27.2", "axios": "^0.27.2",
"blueimp-md5": "^2.19.0", "blueimp-md5": "^2.19.0",
"dayjs": "^1.11.5", "dayjs": "^1.11.5",
"element-plus": "^2.2.12", "element-plus": "^2.2.14",
"lodash-es": "^4.17.21", "lodash-es": "^4.17.21",
"pinia": "^2.0.17", "pinia": "^2.0.20",
"qs": "^6.11.0", "qs": "^6.11.0",
"video.js": "^7.20.2", "video.js": "^7.20.2",
"vue": "^3.2.37", "vue": "^3.2.37",
...@@ -32,18 +32,18 @@ ...@@ -32,18 +32,18 @@
"@types/node": "^16.11.45", "@types/node": "^16.11.45",
"@types/qs": "^6.9.7", "@types/qs": "^6.9.7",
"@types/video.js": "^7.3.45", "@types/video.js": "^7.3.45",
"@vitejs/plugin-vue": "^3.0.1", "@vitejs/plugin-vue": "^3.0.3",
"@vue/eslint-config-typescript": "^11.0.0", "@vue/eslint-config-typescript": "^11.0.0",
"@vue/tsconfig": "^0.1.3", "@vue/tsconfig": "^0.1.3",
"ali-oss": "^6.17.1", "ali-oss": "^6.17.1",
"chalk": "^5.0.1", "chalk": "^5.0.1",
"eslint": "^8.5.0", "eslint": "^8.5.0",
"eslint-plugin-vue": "^9.3.0", "eslint-plugin-vue": "^9.3.0",
"sass": "^1.54.4", "sass": "^1.54.5",
"typescript": "~4.7.4", "typescript": "~4.7.4",
"unplugin-auto-import": "^0.11.1", "unplugin-auto-import": "^0.11.2",
"vite": "^3.0.5", "vite": "^3.0.9",
"vite-plugin-checker": "^0.4.9", "vite-plugin-checker": "^0.4.9",
"vue-tsc": "^0.39.5" "vue-tsc": "^0.40.1"
} }
} }
...@@ -5,8 +5,10 @@ export default { ...@@ -5,8 +5,10 @@ export default {
</script> </script>
<script setup lang="ts"> <script setup lang="ts">
import { menus } from './menus'
import type { IMenuItem } from '@/types' import type { IMenuItem } from '@/types'
import { useMenuStore } from '@/stores/menu'
const menus = useMenuStore().menus
const router = useRouter() const router = useRouter()
const route = useRoute() const route = useRoute()
......
...@@ -3,8 +3,8 @@ export default { name: 'AppHeader' } ...@@ -3,8 +3,8 @@ export default { name: 'AppHeader' }
</script> </script>
<script setup lang="ts"> <script setup lang="ts">
import { menus } from './menus'
import { useUserStore } from '@/stores/user' import { useUserStore } from '@/stores/user'
import { useMenuStore } from '@/stores/menu'
import type { IMenuItem } from '@/types' import type { IMenuItem } from '@/types'
withDefaults(defineProps<{ hasTitle?: boolean }>(), { withDefaults(defineProps<{ hasTitle?: boolean }>(), {
hasTitle: true hasTitle: true
...@@ -13,9 +13,10 @@ withDefaults(defineProps<{ hasTitle?: boolean }>(), { ...@@ -13,9 +13,10 @@ withDefaults(defineProps<{ hasTitle?: boolean }>(), {
const route = useRoute() const route = useRoute()
const userStore = useUserStore() const userStore = useUserStore()
const userInfo = userStore.user const userInfo = userStore.user
const menus = useMenuStore().menus
const logout = async () => { const logout = async () => {
await userStore.logout() await userStore.logout()
location.href = `${import.meta.env.VITE_LOGIN_URL}?rd=${encodeURIComponent(location.href)}` location.href = `${import.meta.env.VITE_LOGIN_URL}?rd=${encodeURIComponent(location.href)}`
......
...@@ -74,6 +74,7 @@ useInfiniteScroll( ...@@ -74,6 +74,7 @@ useInfiniteScroll(
</el-icon> </el-icon>
加载中... 加载中...
</div> </div>
<div class="tips" v-if="!hasMore">没有更多了</div>
</div> </div>
</template> </template>
</div> </div>
......
...@@ -87,10 +87,8 @@ function uploadPicture(url: string) { ...@@ -87,10 +87,8 @@ function uploadPicture(url: string) {
const pictures = detail?.pictures || [] const pictures = detail?.pictures || []
pictures.unshift({ url, name: 'screenshot.png', upload_time: dayjs().format('YYYY-MM-DD HH:mm:ss') }) pictures.unshift({ url, name: 'screenshot.png', upload_time: dayjs().format('YYYY-MM-DD HH:mm:ss') })
uploadExperimentPicture({ experiment_id: form.experiment_id, pictures: JSON.stringify(pictures) }).then(() => { uploadExperimentPicture({ experiment_id: form.experiment_id, pictures: JSON.stringify(pictures) }).then(() => {
fetchInfo()
screenshotLoading = false screenshotLoading = false
if (!detail) {
fetchInfo()
}
}) })
} }
// 提交实验 // 提交实验
......
import type { IMenuItem } from '@/types' import type { IMenuItem } from '@/types'
import { defineStore } from 'pinia'
import { Tickets } from '@element-plus/icons-vue' import { Tickets } from '@element-plus/icons-vue'
export const menus: IMenuItem[] = [
interface State {
studentMenus: IMenuItem[]
adminMenus: IMenuItem[]
}
// 学生菜单
const studentMenus: IMenuItem[] = [
{
name: '智能营销',
path: '/student/lab'
},
{
name: '技能大赛',
path: '/student/contest'
}
]
// 教师、管理员菜单
const adminMenus: IMenuItem[] = [
{ {
name: '智能营销', name: '智能营销',
path: '/admin/lab', path: '/admin/lab',
...@@ -47,3 +66,15 @@ export const menus: IMenuItem[] = [ ...@@ -47,3 +66,15 @@ export const menus: IMenuItem[] = [
] ]
} }
] ]
export const useMenuStore = defineStore({
id: 'menu',
state: (): State => ({
studentMenus,
adminMenus
}),
getters: {
menus: state => state.studentMenus
},
actions: {}
})
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论