Skip to content

Commit

Permalink
fix: 修复升级引起的部分bug
Browse files Browse the repository at this point in the history
  • Loading branch information
yockii committed Oct 24, 2024
1 parent 586fc5f commit 48f21fd
Show file tree
Hide file tree
Showing 3 changed files with 112 additions and 125 deletions.
1 change: 0 additions & 1 deletion page/source/src/main.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@ import "vfonts/FiraCode.css" // 等宽字体
import "uno.css"
import "animate.css"

import "virtual:svg-icons-register"
import svgIcon from "./components/SvgIcon.vue"
import dayjs from "dayjs"
import "dayjs/locale/zh-cn"
Expand Down
229 changes: 112 additions & 117 deletions page/source/src/store/project.ts
Original file line number Diff line number Diff line change
@@ -1,140 +1,135 @@
import { Project, ProjectMember, ProjectModule } from "@/types/project"
import { defineStore } from "pinia"
import { useUserStore } from "./user"
import { useRoute } from "vue-router"
import {Project, ProjectMember, ProjectModule} from "@/types/project"
import {defineStore} from "pinia"
import {useUserStore} from "./user"
import {useRoute} from "vue-router"

type ProjectModules = {
[key: string]: ProjectModule[]
[key: string]: ProjectModule[]
}
type projectResourceCodes = {
[key: string]: string[]
[key: string]: string[]
}

export const useProjectStore = defineStore(
"project",
() => {
const projects = ref<Project[]>([])
const projectModules = ref<ProjectModules>({})
const projectResourceCodes = ref<projectResourceCodes>({})
"project",
() => {
const projects = ref<Project[]>([])
const projectModules = ref<ProjectModules>({})
const projectResourceCodes = ref<projectResourceCodes>({})

const project = computed<Project>(() => {
const route = useRoute()
const projectId = route.params.id as string
return (
projects.value.find((project) => project.id === projectId) || {
id: "",
name: "",
code: "",
description: "",
stageId: ""
}
)
})
const currentProject = ref<Project>({
id: "",
name: "",
code: "",
description: "",
stageId: ""
})

const modules = computed<ProjectModule[]>(() => {
const route = useRoute()
const projectId = route.params.id as string
if (projectModules.value[projectId]) {
return projectModules.value[projectId]
}
return []
})
const modules = computed<ProjectModule[]>(() => {
const route = useRoute()
const projectId = route?.params?.id
if (projectModules.value[projectId]) {
return projectModules.value[projectId]
}
return []
})

const resourceCodes = computed<string[]>(() => {
const route = useRoute()
const projectId = route.params.id as string
if (projectResourceCodes.value[projectId]) {
return projectResourceCodes.value[projectId]
}
return []
})
const resourceCodes = computed<string[]>(() => {
const route = useRoute()
const projectId = route.params.id as string
if (projectResourceCodes.value[projectId]) {
return projectResourceCodes.value[projectId]
}
return []
})

const moduleTree = computed<ProjectModule[]>(() => {
const tree = modules.value.filter((module) => !module.parentId && module.status !== 1 && module.status !== -1)
const findChildren = (parent: ProjectModule) => {
const children = modules.value.filter((module) => module.parentId === parent.id && module.status !== 1 && module.status !== -1)
if (children.length) {
parent.children = children
children.forEach((child) => findChildren(child))
}
}
tree.forEach((module) => findChildren(module))
return tree
})
const moduleTree = computed<ProjectModule[]>(() => {
const tree = modules.value.filter((module) => !module.parentId && module.status !== 1 && module.status !== -1)
const findChildren = (parent: ProjectModule) => {
const children = modules.value.filter((module) => module.parentId === parent.id && module.status !== 1 && module.status !== -1)
if (children.length) {
parent.children = children
children.forEach((child) => findChildren(child))
}
}
tree.forEach((module) => findChildren(module))
return tree
})

const memberList = computed<ProjectMember[]>(() => {
const userIdSet = new Set<string>()
const set = new Set<ProjectMember>()
// 将members中的成员根据userId进行去重并添加到set中
project.value.members?.forEach((member) => {
if (!userIdSet.has(member.userId)) {
userIdSet.add(member.userId)
set.add(member)
}
})
return Array.from(set)
})
const memberList = computed<ProjectMember[]>(() => {
const userIdSet = new Set<string>()
const set = new Set<ProjectMember>()
// 将members中的成员根据userId进行去重并添加到set中
currentProject.value.members?.forEach((member) => {
if (!userIdSet.has(member.userId)) {
userIdSet.add(member.userId)
set.add(member)
}
})
return Array.from(set)
})

const isOwner = computed<boolean>(() => {
return project.value.ownerId === useUserStore().user.id
})
const isOwner = computed<boolean>(() => {
return currentProject.value.ownerId === useUserStore().user.id
})

const addProject = (project: Project) => {
// 如果id相同则更新,否则新增
const index = projects.value.findIndex((item) => item.id === project.id)
if (index !== -1) {
projects.value[index] = project
} else {
projects.value.push(project)
}
}
const addProject = (project: Project) => {
// 如果id相同则更新,否则新增
const index = projects.value.findIndex((item) => item.id === project.id)
if (index !== -1) {
projects.value[index] = project
} else {
projects.value.push(project)
}
currentProject.value = project
}

const setProjectModules = (projectId: string, modules: ProjectModule[]) => {
projectModules.value[projectId] = modules
}
const setProjectModules = (projectId: string, modules: ProjectModule[]) => {
projectModules.value[projectId] = modules
}

const setProjectResourceCodes = (projectId: string, resourceCodes: string[]) => {
projectResourceCodes.value[projectId] = resourceCodes
}
const setProjectResourceCodes = (projectId: string, resourceCodes: string[]) => {
projectResourceCodes.value[projectId] = resourceCodes
}

const hasResourceCode = (resourceCode: string): boolean => {
const userStore = useUserStore()
return (
userStore.user.id === project.value.ownerId ||
userStore.hasResourceCode("allProjectDetail") ||
(resourceCodes.value && resourceCodes.value.includes(resourceCode))
)
}
const hasResourceCode = (resourceCode: string): boolean => {
const userStore = useUserStore()
return (
userStore.user.id === currentProject.value.ownerId ||
userStore.hasResourceCode("allProjectDetail") ||
(resourceCodes.value && resourceCodes.value.includes(resourceCode))
)
}

const hasResourceCodes = (modresourceCodesule: string[]): boolean => {
const userStore = useUserStore()
return (
userStore.user.id === project.value.ownerId ||
userStore.hasResourceCode("allProjectDetail") ||
(resourceCodes.value && modresourceCodesule.some((resourceCode) => resourceCodes.value.includes(resourceCode)))
)
}
const hasResourceCodes = (modresourceCodesule: string[]): boolean => {
const userStore = useUserStore()
return (
userStore.user.id === currentProject.value.ownerId ||
userStore.hasResourceCode("allProjectDetail") ||
(resourceCodes.value && modresourceCodesule.some((resourceCode) => resourceCodes.value.includes(resourceCode)))
)
}

return {
projects,
project,
modules,
moduleTree,
memberList,
isOwner,
addProject,
setProjectModules,
setProjectResourceCodes,
hasResourceCode,
hasResourceCodes
return {
projects,
project: currentProject,
modules,
moduleTree,
memberList,
isOwner,
addProject,
setProjectModules,
setProjectResourceCodes,
hasResourceCode,
hasResourceCodes
}
},
{
// persist: {
// key: "project",
// storage: sessionStorage
// }
}
},
{
// persist: {
// key: "project",
// storage: sessionStorage
// }
}
)

// export const useProjectStore = defineStore("project", {
Expand Down
7 changes: 0 additions & 7 deletions page/source/vite.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@ import { NaiveUiResolver } from "unplugin-vue-components/resolvers"
import Unocss from "unocss/vite"
import presetUno from "@unocss/preset-uno"
import { presetAttributify } from "unocss"
import { createSvgIconsPlugin } from "vite-plugin-svg-icons"

// https://vitejs.dev/config/
export default defineConfig({
Expand Down Expand Up @@ -39,12 +38,6 @@ export default defineConfig({
Unocss({
presets: [presetUno(), presetAttributify()]
}),
createSvgIconsPlugin({
// Specify the icon folder to be cached
iconDirs: [path.resolve(process.cwd(), "src/assets")],
// Specify symbolId format
symbolId: "icon-[dir]-[name]"
})
],
resolve: {
alias: {
Expand Down

0 comments on commit 48f21fd

Please sign in to comment.