2026-01-23 18:16:03 +08:00
|
|
|
|
<script setup lang="ts">
|
2026-02-11 17:27:08 +08:00
|
|
|
|
import { computed, watch } from 'vue'
|
2026-03-03 08:35:28 +08:00
|
|
|
|
import TianZiGe from '@/components/custom/user/TianZiGe.vue'
|
2026-02-11 17:27:08 +08:00
|
|
|
|
import { QuestionCategoryEnum } from '@/enum/business'
|
|
|
|
|
|
import { useCompetitionStore } from '@/store/modules/competition'
|
2026-01-23 18:16:03 +08:00
|
|
|
|
|
2026-02-11 17:27:08 +08:00
|
|
|
|
const store = useCompetitionStore()
|
|
|
|
|
|
const currentQuestionMainInfo = computed(() => store.currentQuestionMainInfo)
|
|
|
|
|
|
const currentQuestionDetail = computed(() => store.currentQuestionDetail)
|
|
|
|
|
|
// console.log(currentQuestionMainInfo.value, 'currentQuestionMainInfo')
|
|
|
|
|
|
// 题目
|
|
|
|
|
|
const title = computed(() => currentQuestionMainInfo.value?.QuestionList?.QuestionContent)
|
|
|
|
|
|
// 题目内容
|
|
|
|
|
|
const content = computed(() => currentQuestionDetail.value.Name)
|
|
|
|
|
|
// 模版类型
|
|
|
|
|
|
const template = computed(() => currentQuestionMainInfo.value?.Activity_Question?.UIType)
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* 组合后的标题(用于汉字加一加模板)
|
|
|
|
|
|
* 将 content 插入到 title 的引号中,并拆分以支持不同样式
|
|
|
|
|
|
*/
|
|
|
|
|
|
const parsedComponentAddTitle = computed(() => {
|
|
|
|
|
|
const t = title.value || ''
|
|
|
|
|
|
const c = content.value || ''
|
|
|
|
|
|
|
|
|
|
|
|
// 尝试替换全角空引号
|
|
|
|
|
|
if (t.includes('“”')) {
|
|
|
|
|
|
const [prefix, suffix] = t.split('“”')
|
|
|
|
|
|
return {
|
|
|
|
|
|
type: 'quote_full',
|
|
|
|
|
|
prefix,
|
|
|
|
|
|
content: c,
|
|
|
|
|
|
suffix,
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
// 尝试替换半角空引号
|
|
|
|
|
|
if (t.includes('""')) {
|
|
|
|
|
|
const [prefix, suffix] = t.split('""')
|
|
|
|
|
|
return {
|
|
|
|
|
|
type: 'quote_half',
|
|
|
|
|
|
prefix,
|
|
|
|
|
|
content: c,
|
|
|
|
|
|
suffix,
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 如果没有找到空引号,直接追加
|
|
|
|
|
|
return {
|
|
|
|
|
|
type: 'normal',
|
|
|
|
|
|
prefix: t,
|
|
|
|
|
|
content: c,
|
|
|
|
|
|
suffix: '',
|
|
|
|
|
|
}
|
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
|
|
/** 获取富文本里面的text */
|
2026-01-23 18:16:03 +08:00
|
|
|
|
const pinyinChars = computed(() => {
|
2026-02-13 08:34:09 +08:00
|
|
|
|
if (content.value) {
|
2026-02-10 08:45:26 +08:00
|
|
|
|
// 创建临时元素提取HTML文本内容
|
|
|
|
|
|
const div = document.createElement('div')
|
2026-02-11 17:27:08 +08:00
|
|
|
|
div.innerHTML = content.value
|
2026-02-10 08:45:26 +08:00
|
|
|
|
const text = div.textContent || ''
|
|
|
|
|
|
return text.trim().split(/\s+/).filter(Boolean)
|
2026-01-23 18:16:03 +08:00
|
|
|
|
}
|
|
|
|
|
|
return []
|
|
|
|
|
|
})
|
2026-02-11 17:27:08 +08:00
|
|
|
|
|
|
|
|
|
|
watch(
|
|
|
|
|
|
() => [currentQuestionMainInfo, currentQuestionDetail],
|
|
|
|
|
|
() => {
|
|
|
|
|
|
// eslint-disable-next-line no-console
|
|
|
|
|
|
console.log('Current currentQuestionMainInfo:', currentQuestionMainInfo.value)
|
|
|
|
|
|
// eslint-disable-next-line no-console
|
|
|
|
|
|
console.log('Current currentQuestionMainInfo:', currentQuestionMainInfo)
|
|
|
|
|
|
},
|
|
|
|
|
|
{ deep: true, immediate: true },
|
|
|
|
|
|
)
|
2026-01-23 18:16:03 +08:00
|
|
|
|
</script>
|
|
|
|
|
|
|
|
|
|
|
|
<template>
|
2026-02-13 08:34:09 +08:00
|
|
|
|
<div class="w-full flex p-6">
|
2026-03-03 18:10:44 +08:00
|
|
|
|
<!-- <p>template:{{ template }}</p> -->
|
|
|
|
|
|
<!-- 模板A: 汉字听写1-提示 (拼音+提示) -->
|
2026-03-09 08:37:32 +08:00
|
|
|
|
<div v-if="template === QuestionCategoryEnum.ChineseCharacterDictation1 || template === QuestionCategoryEnum.ChineseCharacterDictation2" class="text-center">
|
2026-02-11 17:27:08 +08:00
|
|
|
|
<div class="mb-6 inline-block text-5xl font-bold leading-none">
|
2026-02-13 08:34:09 +08:00
|
|
|
|
<div class="ptions-container1 mb-2 text-center text-2xl">
|
2026-02-11 17:27:08 +08:00
|
|
|
|
{{ title }}
|
|
|
|
|
|
</div>
|
2026-03-03 18:10:44 +08:00
|
|
|
|
<div class="rich-content ml-3 mt-4 flex gap-1 color-red-600">
|
|
|
|
|
|
<!-- <TianZiGe v-for="(char, index) in pinyinChars" :key="index" :char="char" /> -->
|
|
|
|
|
|
{{ content }}
|
|
|
|
|
|
</div>
|
2026-01-23 18:16:03 +08:00
|
|
|
|
</div>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
<!-- 模板B: 汉字听写-同音字 (大字) -->
|
2026-02-11 17:27:08 +08:00
|
|
|
|
<!-- 暂时未匹配到枚举,保持原样或删除 -->
|
|
|
|
|
|
<!-- <div v-else-if="template === 'TEMPLATE_DICTATION_HOMOPHONE'" class="text-center"> -->
|
2026-01-23 18:16:03 +08:00
|
|
|
|
|
|
|
|
|
|
<!-- 模板C: 汉字加一加 (提示+部件) -->
|
2026-02-11 17:27:08 +08:00
|
|
|
|
<div v-else-if="template === QuestionCategoryEnum.CharacterRadicalAddition" class="text-center">
|
|
|
|
|
|
<div class="text-[50px] font-bold">
|
|
|
|
|
|
<template v-if="parsedComponentAddTitle.type === 'quote_full'">
|
|
|
|
|
|
<span class="text-black">{{ parsedComponentAddTitle.prefix }}“</span>
|
|
|
|
|
|
<span class="text-red-600">{{ parsedComponentAddTitle.content }}</span>
|
|
|
|
|
|
<span class="text-black">”{{ parsedComponentAddTitle.suffix }}</span>
|
|
|
|
|
|
</template>
|
|
|
|
|
|
|
|
|
|
|
|
<template v-else-if="parsedComponentAddTitle.type === 'quote_half'">
|
|
|
|
|
|
<span class="text-black">{{ parsedComponentAddTitle.prefix }}"</span>
|
|
|
|
|
|
<span class="text-red-600">{{ parsedComponentAddTitle.content }}</span>
|
|
|
|
|
|
<span class="text-black">"{{ parsedComponentAddTitle.suffix }}</span>
|
|
|
|
|
|
</template>
|
|
|
|
|
|
|
|
|
|
|
|
<template v-else>
|
|
|
|
|
|
<span class="text-black">{{ parsedComponentAddTitle.prefix }}</span>
|
|
|
|
|
|
<span class="ml-4 text-red-600">{{ parsedComponentAddTitle.content }}</span>
|
|
|
|
|
|
</template>
|
2026-01-23 18:16:03 +08:00
|
|
|
|
</div>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
<!-- 模板D: 词语听写 (拼音+提示) -->
|
2026-02-11 17:27:08 +08:00
|
|
|
|
<div v-else-if="template === QuestionCategoryEnum.WordDictation" class="flex flex-col items-center">
|
2026-01-23 18:16:03 +08:00
|
|
|
|
<div class="mb-8 flex flex-wrap justify-center gap-6">
|
2026-03-03 08:35:28 +08:00
|
|
|
|
<TianZiGe v-for="(char, index) in pinyinChars" :key="index" :char="char" />
|
2026-01-23 18:16:03 +08:00
|
|
|
|
</div>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
<!-- 模板E: 成语-文字要求 -->
|
2026-03-09 08:37:32 +08:00
|
|
|
|
<div v-else-if="template === QuestionCategoryEnum.IdiomWriting1 || template === QuestionCategoryEnum.IdiomWriting2" class="text-center">
|
2026-01-23 18:16:03 +08:00
|
|
|
|
<div class="mb-8 text-4xl text-gray-800 font-bold">
|
2026-02-13 08:34:09 +08:00
|
|
|
|
<!-- {{ content }} -->
|
2026-02-11 17:27:08 +08:00
|
|
|
|
<div class="rich-content" v-html="content" />
|
2026-01-23 18:16:03 +08:00
|
|
|
|
</div>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
2026-02-05 18:00:11 +08:00
|
|
|
|
<!-- 模板G: 诗词理解-选择题 (通用选择题模板) -->
|
2026-02-11 17:27:08 +08:00
|
|
|
|
<div v-else-if="template === QuestionCategoryEnum.PoetryComprehension" class="w-full flex flex-col items-center">
|
|
|
|
|
|
<div class="options-container text-2xl">
|
|
|
|
|
|
{{ title }}
|
2026-02-05 18:00:11 +08:00
|
|
|
|
</div>
|
2026-02-11 17:27:08 +08:00
|
|
|
|
<div class="mb-1 text-3xl text-gray-800 font-bold leading-relaxed">
|
|
|
|
|
|
<div class="rich-content" v-html="content" />
|
2026-02-05 18:00:11 +08:00
|
|
|
|
</div>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
2026-03-16 17:59:49 +08:00
|
|
|
|
<!-- 模板ChangeWords: 换字组成语 -->
|
|
|
|
|
|
<div v-else-if="template === QuestionCategoryEnum.ChangeWords" class="w-full flex flex-col items-center">
|
|
|
|
|
|
<div class="options-container text-2xl">
|
|
|
|
|
|
{{ title }}
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div class="mb-1 text-3xl text-gray-800 font-bold leading-relaxed">
|
|
|
|
|
|
<div class="rich-content" v-html="content" />
|
|
|
|
|
|
</div>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
<!-- 模板: 场景猜诗句 -->
|
|
|
|
|
|
<div v-else-if="template === QuestionCategoryEnum.SceneBasedPoemGuessing" class="w-full flex flex-col items-center">
|
|
|
|
|
|
<div class="options-container text-2xl">
|
|
|
|
|
|
{{ title }}
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div class="mb-1 text-3xl text-gray-800 font-bold leading-relaxed">
|
|
|
|
|
|
<div class="rich-content" v-html="content" />
|
|
|
|
|
|
</div>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
<!-- 模板: 联想对对碰 -->
|
|
|
|
|
|
<div v-else-if="template === QuestionCategoryEnum.AssociationMatching" class="w-full flex flex-col items-center">
|
|
|
|
|
|
<div class="options-container text-2xl">
|
|
|
|
|
|
{{ title }}
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div class="mb-1 text-3xl text-gray-800 font-bold leading-relaxed">
|
|
|
|
|
|
<div class="rich-content" v-html="content" />
|
|
|
|
|
|
</div>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
<!-- 模板: 字词飞花令 -->
|
|
|
|
|
|
<div v-else-if="template === QuestionCategoryEnum.CharacterWordFlowerDrinkingGame" class="w-full flex flex-col items-center">
|
|
|
|
|
|
<div class="options-container text-2xl">
|
2026-03-17 15:28:11 +08:00
|
|
|
|
请回答带有“{{ content }}”的诗词。
|
2026-03-16 17:59:49 +08:00
|
|
|
|
</div>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
<!-- 模板: 诗词常识 -->
|
|
|
|
|
|
<div v-else-if="template === QuestionCategoryEnum.PoetryCommonKnowledge" class="w-full flex flex-col items-center">
|
|
|
|
|
|
<div class="options-container text-2xl">
|
|
|
|
|
|
{{ title }}
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div class="mb-1 text-3xl text-gray-800 font-bold leading-relaxed">
|
|
|
|
|
|
<div class="rich-content" v-html="content" />
|
|
|
|
|
|
</div>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
<!-- 模板: 逆向接诗句 -->
|
|
|
|
|
|
<div v-else-if="template === QuestionCategoryEnum.ReversePoemMatching" class="w-full flex flex-col items-center">
|
|
|
|
|
|
<div class="options-container text-2xl">
|
|
|
|
|
|
{{ title }}
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div class="mb-1 text-3xl text-gray-800 font-bold leading-relaxed">
|
|
|
|
|
|
<div class="rich-content" v-html="content" />
|
|
|
|
|
|
</div>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
2026-01-23 18:16:03 +08:00
|
|
|
|
<div v-else class="text-red-500">
|
2026-03-16 17:59:49 +08:00
|
|
|
|
<div class="mb-6 inline-block text-5xl font-bold leading-none">
|
|
|
|
|
|
<div class="ptions-container1 mb-2 text-center text-2xl">
|
|
|
|
|
|
{{ title }}
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div class="rich-content ml-3 mt-4 flex gap-1 color-red-600">
|
|
|
|
|
|
{{ content }}
|
|
|
|
|
|
</div>
|
|
|
|
|
|
</div>
|
2026-01-23 18:16:03 +08:00
|
|
|
|
未知的题目模板: {{ template }}
|
|
|
|
|
|
</div>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
</template>
|
2026-02-05 18:00:11 +08:00
|
|
|
|
|
|
|
|
|
|
<style lang="scss" scoped>
|
|
|
|
|
|
.options-container {
|
|
|
|
|
|
width: 100%;
|
|
|
|
|
|
display: flex;
|
|
|
|
|
|
flex-wrap: wrap;
|
|
|
|
|
|
justify-content: center;
|
|
|
|
|
|
gap: 2rem;
|
|
|
|
|
|
margin-bottom: 3rem;
|
|
|
|
|
|
|
|
|
|
|
|
.option-card {
|
2026-02-06 17:45:44 +08:00
|
|
|
|
// width: 320px;
|
|
|
|
|
|
// height: 260px;
|
2026-02-05 18:00:11 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.option-card {
|
|
|
|
|
|
display: flex;
|
|
|
|
|
|
cursor: pointer;
|
|
|
|
|
|
align-items: center;
|
|
|
|
|
|
justify-content: center;
|
|
|
|
|
|
border: 2px solid transparent;
|
2026-02-10 08:45:26 +08:00
|
|
|
|
border-radius: 0.75rem;
|
|
|
|
|
|
/* rounded-xl */
|
|
|
|
|
|
padding: 1rem;
|
|
|
|
|
|
/* p-4 */
|
2026-02-05 18:00:11 +08:00
|
|
|
|
transition: all 0.3s;
|
|
|
|
|
|
|
|
|
|
|
|
&:hover {
|
2026-02-10 08:45:26 +08:00
|
|
|
|
border-color: #f87171;
|
|
|
|
|
|
/* border-red-400 */
|
|
|
|
|
|
background-color: #fef2f2;
|
|
|
|
|
|
/* bg-red-50 */
|
2026-02-05 18:00:11 +08:00
|
|
|
|
box-shadow:
|
|
|
|
|
|
0 10px 15px -3px rgba(0, 0, 0, 0.1),
|
2026-02-10 08:45:26 +08:00
|
|
|
|
0 4px 6px -2px rgba(0, 0, 0, 0.05);
|
|
|
|
|
|
/* shadow-lg */
|
2026-02-05 18:00:11 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
&.is-mixed {
|
|
|
|
|
|
flex-direction: column;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
&.is-text {
|
|
|
|
|
|
flex-direction: row;
|
2026-02-10 08:45:26 +08:00
|
|
|
|
gap: 1rem;
|
|
|
|
|
|
/* gap-4 */
|
2026-02-05 18:00:11 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.option-image-wrapper {
|
2026-02-06 17:45:44 +08:00
|
|
|
|
margin-bottom: 0.8rem;
|
|
|
|
|
|
height: 6rem;
|
2026-02-05 18:00:11 +08:00
|
|
|
|
width: 100%;
|
|
|
|
|
|
display: flex;
|
|
|
|
|
|
align-items: center;
|
|
|
|
|
|
justify-content: center;
|
|
|
|
|
|
overflow: hidden;
|
2026-02-10 08:45:26 +08:00
|
|
|
|
border-radius: 0.5rem;
|
|
|
|
|
|
/* rounded-lg */
|
|
|
|
|
|
padding: 0.5rem;
|
|
|
|
|
|
/* p-2 */
|
2026-02-05 18:00:11 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.option-image {
|
|
|
|
|
|
height: 100%;
|
|
|
|
|
|
width: 100%;
|
|
|
|
|
|
object-fit: contain;
|
|
|
|
|
|
transition: transform 0.3s;
|
|
|
|
|
|
|
|
|
|
|
|
.group:hover & {
|
|
|
|
|
|
transform: scale(1.05);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.tianzige-wrapper {
|
|
|
|
|
|
position: relative;
|
2026-02-10 08:45:26 +08:00
|
|
|
|
margin-bottom: 0.75rem;
|
|
|
|
|
|
/* mb-3 */
|
|
|
|
|
|
height: 8rem;
|
|
|
|
|
|
/* h-32 */
|
|
|
|
|
|
width: 8rem;
|
|
|
|
|
|
/* w-32 */
|
2026-02-05 18:00:11 +08:00
|
|
|
|
display: flex;
|
|
|
|
|
|
user-select: none;
|
|
|
|
|
|
align-items: center;
|
|
|
|
|
|
justify-content: center;
|
2026-02-10 08:45:26 +08:00
|
|
|
|
border: 2px solid #ef4444;
|
|
|
|
|
|
/* border-red-500 */
|
2026-02-05 18:00:11 +08:00
|
|
|
|
background-color: white;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.tianzige-bg {
|
|
|
|
|
|
pointer-events: none;
|
|
|
|
|
|
position: absolute;
|
|
|
|
|
|
inset: 0;
|
|
|
|
|
|
z-index: 0;
|
|
|
|
|
|
height: 100%;
|
|
|
|
|
|
width: 100%;
|
|
|
|
|
|
|
|
|
|
|
|
.line-horizontal {
|
|
|
|
|
|
position: absolute;
|
|
|
|
|
|
left: 0;
|
|
|
|
|
|
top: 50%;
|
|
|
|
|
|
height: 1px;
|
|
|
|
|
|
width: 100%;
|
2026-02-10 08:45:26 +08:00
|
|
|
|
border-top: 1px dashed #f87171;
|
|
|
|
|
|
/* border-red-400 */
|
2026-02-05 18:00:11 +08:00
|
|
|
|
opacity: 0.6;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.line-vertical {
|
|
|
|
|
|
position: absolute;
|
|
|
|
|
|
left: 50%;
|
|
|
|
|
|
top: 0;
|
|
|
|
|
|
height: 100%;
|
|
|
|
|
|
width: 1px;
|
2026-02-10 08:45:26 +08:00
|
|
|
|
border-left: 1px dashed #f87171;
|
|
|
|
|
|
/* border-red-400 */
|
2026-02-05 18:00:11 +08:00
|
|
|
|
opacity: 0.6;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.line-diagonal {
|
|
|
|
|
|
position: absolute;
|
|
|
|
|
|
inset: 0;
|
|
|
|
|
|
opacity: 0.6;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.tianzige-text {
|
2026-02-10 08:45:26 +08:00
|
|
|
|
font-family: 'KaiTi', 'STKaiti', serif;
|
|
|
|
|
|
/* font-kaaiti */
|
2026-02-05 18:00:11 +08:00
|
|
|
|
z-index: 10;
|
2026-02-10 08:45:26 +08:00
|
|
|
|
font-size: 3.75rem;
|
|
|
|
|
|
/* text-6xl */
|
2026-02-05 18:00:11 +08:00
|
|
|
|
font-weight: 700;
|
2026-02-10 08:45:26 +08:00
|
|
|
|
color: #1f2937;
|
|
|
|
|
|
/* text-gray-800 */
|
2026-02-05 18:00:11 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.option-content {
|
|
|
|
|
|
display: flex;
|
|
|
|
|
|
align-items: center;
|
2026-02-10 08:45:26 +08:00
|
|
|
|
gap: 0.75rem;
|
|
|
|
|
|
/* gap-3 */
|
2026-02-05 18:00:11 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.option-label {
|
2026-02-10 08:45:26 +08:00
|
|
|
|
height: 2rem;
|
|
|
|
|
|
/* h-8 */
|
|
|
|
|
|
width: 2rem;
|
|
|
|
|
|
/* w-8 */
|
2026-02-05 18:00:11 +08:00
|
|
|
|
display: flex;
|
|
|
|
|
|
align-items: center;
|
|
|
|
|
|
justify-content: center;
|
2026-02-10 08:45:26 +08:00
|
|
|
|
border-radius: 9999px;
|
|
|
|
|
|
/* rounded-full */
|
|
|
|
|
|
background-color: #fee2e2;
|
|
|
|
|
|
/* bg-red-100 */
|
|
|
|
|
|
color: #dc2626;
|
|
|
|
|
|
/* text-red-600 */
|
2026-02-05 18:00:11 +08:00
|
|
|
|
font-weight: 700;
|
|
|
|
|
|
|
|
|
|
|
|
.group:hover & {
|
2026-02-10 08:45:26 +08:00
|
|
|
|
background-color: #ef4444;
|
|
|
|
|
|
/* bg-red-500 */
|
2026-02-05 18:00:11 +08:00
|
|
|
|
color: white;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.option-text {
|
2026-02-10 08:45:26 +08:00
|
|
|
|
font-size: 1.25rem;
|
|
|
|
|
|
/* text-xl */
|
|
|
|
|
|
color: #374151;
|
|
|
|
|
|
/* text-gray-700 */
|
2026-02-05 18:00:11 +08:00
|
|
|
|
font-weight: 500;
|
|
|
|
|
|
|
|
|
|
|
|
.group:hover & {
|
2026-02-10 08:45:26 +08:00
|
|
|
|
color: #b91c1c;
|
|
|
|
|
|
/* text-red-700 */
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.homophone {
|
|
|
|
|
|
:deep(img) {
|
|
|
|
|
|
height: 230px !important;
|
|
|
|
|
|
width: auto !important;
|
|
|
|
|
|
object-fit: contain;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.rich-content {
|
|
|
|
|
|
:deep(img) {
|
2026-03-02 09:53:34 +08:00
|
|
|
|
max-width: 200px;
|
2026-02-10 08:45:26 +08:00
|
|
|
|
height: auto;
|
|
|
|
|
|
object-fit: contain;
|
2026-02-13 08:34:09 +08:00
|
|
|
|
margin: 0 auto;
|
2026-02-10 08:45:26 +08:00
|
|
|
|
vertical-align: middle;
|
2026-02-05 18:00:11 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
</style>
|