This commit is contained in:
2025-10-04 12:10:55 +08:00
parent 68512d6d54
commit a823cb7a13
7 changed files with 80 additions and 33 deletions

View File

@@ -1,15 +1,48 @@
<script lang="ts" setup>
import { Icon } from "@iconify/vue"
defineEmits(["click", "search"])
interface Props {
type: "题目" | "用户"
username?: string
}
const props = defineProps<Props>()
const emits = defineEmits(["click", "search", "filterClass"])
const showFilterClass = computed(() => {
return props.type === "用户" && props.username?.startsWith("ks")
})
function filterClass() {
const match = props.username!.match(/^ks\d{3,4}/)
const classname = match ? match[0] : ""
if (!classname) return
emits("filterClass", classname)
}
</script>
<template>
<n-flex align="center">
<n-button text type="info" @click="$emit('click')"><slot></slot></n-button>
<n-button text @click="$emit('search')">
<template #icon>
<Icon icon="streamline-emojis:magnifying-glass-tilted-left"></Icon>
<n-tooltip>
<template #trigger>
<n-button text @click="$emit('search')">
<template #icon>
<Icon icon="streamline-emojis:magnifying-glass-tilted-left"></Icon>
</template>
</n-button>
</template>
</n-button>
{{ "搜索" + props.type}}
</n-tooltip>
<n-tooltip v-if="showFilterClass">
<template #trigger>
<n-button text @click="filterClass">
<template #icon>
<Icon icon="openmoji:filter"></Icon>
</template>
</n-button>
</template>
筛选班级
</n-tooltip>
</n-flex>
</template>

View File

@@ -3,11 +3,16 @@
<n-button text type="info" @click="$emit('showCode')">
{{ props.submission.id.slice(0, 12) }}
</n-button>
<n-button text @click="goto">
<template #icon>
<Icon icon="streamline-emojis:backhand-index-pointing-right-1"></Icon>
<n-tooltip>
<template #trigger>
<n-button text @click="goto">
<template #icon>
<Icon icon="catppuccin:folder-debug"></Icon>
</template>
</n-button>
</template>
</n-button>
查看测试详情
</n-tooltip>
</n-flex>
<span v-else>
{{ props.submission.id.slice(0, 12) }}