diff --git a/src/oj/problem/components/Form.vue b/src/oj/problem/components/Form.vue index 748660e..4c135f2 100644 --- a/src/oj/problem/components/Form.vue +++ b/src/oj/problem/components/Form.vue @@ -48,7 +48,7 @@ const router = useRouter() const userStore = useUserStore() const codeStore = useCodeStore() const problemStore = useProblemStore() -const { problem } = storeToRefs(problemStore) +const { problem, languages } = storeToRefs(problemStore) const { isMobile, isDesktop } = useBreakpoints() @@ -72,15 +72,7 @@ const menu = computed(() => [ { label: "重置代码", key: "reset" }, ]) -const flowchartAndLanguages = computed( - () => - [ - ...(problem.value!.allow_flowchart ? ["Flowchart"] : []), - ...problem.value!.languages, - ] as LANGUAGE[], -) - -const languageOptions: DropdownOption[] = flowchartAndLanguages.value.map( +const languageOptions: DropdownOption[] = languages.value.map( (it) => ({ label: () => h(NFlex, { align: "center" }, () => [ @@ -150,7 +142,7 @@ defineExpose({ }) onMounted(() => { - if (!problem.value!.languages.includes(codeStore.code.language)) { + if (!languages.value.includes(codeStore.code.language)) { codeStore.code.language = "Python3" } }) diff --git a/src/oj/problem/components/ProblemEditor.vue b/src/oj/problem/components/ProblemEditor.vue index 002a936..4c9a60a 100644 --- a/src/oj/problem/components/ProblemEditor.vue +++ b/src/oj/problem/components/ProblemEditor.vue @@ -10,6 +10,10 @@ import storage from "utils/storage" import { LANGUAGE } from "utils/types" import Form from "./Form.vue" +const FlowchartEditor = defineAsyncComponent( + () => import("shared/components/FlowchartEditor/index.vue"), +) + const route = useRoute() const formRef = useTemplateRef>("formRef") @@ -85,7 +89,9 @@ const handleSyncStatusChange = (status: { @change-language="changeLanguage" @toggle-sync="toggleSync" /> + { const problem = ref(null) // ==================== 计算属性 ==================== - const hasProblem = computed(() => problem.value !== null) - - const problemId = computed(() => problem.value?._id ?? null) - - const problemTitle = computed(() => problem.value?.title ?? "") - - const difficulty = computed(() => problem.value?.difficulty ?? "") - - const languages = computed(() => problem.value?.languages ?? []) - - const isACed = computed(() => problem.value?.my_status === 0) + const languages = computed(() => { + if (problem.value?.allow_flowchart) { + return ["Flowchart", ...problem.value?.languages] + } + return problem.value?.languages ?? [] + }) // ==================== 操作 ==================== /** @@ -51,12 +46,7 @@ export const useProblemStore = defineStore("problem", () => { problem, // 计算属性 - hasProblem, - problemId, - problemTitle, - difficulty, languages, - isACed, // 操作 setProblem, diff --git a/src/shared/components/FlowchartEditor/index.vue b/src/shared/components/FlowchartEditor/index.vue new file mode 100644 index 0000000..537bc68 --- /dev/null +++ b/src/shared/components/FlowchartEditor/index.vue @@ -0,0 +1,14 @@ + + + + +