Compare commits
6 Commits
9d801ba6b4
...
2fad025496
| Author | SHA1 | Date | |
|---|---|---|---|
| 2fad025496 | |||
| 02b4720b34 | |||
| 8964fcdea7 | |||
| 771fb807eb | |||
| 782c61a38c | |||
| 40a6850c3f |
3
.vscode/settings.json
vendored
@ -41,5 +41,6 @@
|
||||
"activityinfo",
|
||||
"Echarts",
|
||||
"Typeit"
|
||||
] // `
|
||||
],
|
||||
"kiroAgent.configureMCP": "Disabled" // `
|
||||
}
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
# 应用的基础URL,默认为 "/"
|
||||
# 如果使用子目录,必须以 "/" 结尾,例如 "/admin/" 而不是 "/admin"
|
||||
# VITE_BASE_URL='/admin'
|
||||
VITE_BASE_URL='/'
|
||||
|
||||
# VITE_BASE_URL="https://api.qyzhjy.com"
|
||||
|
||||
|
||||
@ -3,9 +3,9 @@
|
||||
|
||||
# VITE_SERVICE_BASE_URL=http://192.168.5.140:9999
|
||||
|
||||
# VITE_SERVICE_BASE_URL=https://api.qyzhjy.com
|
||||
# VITE_SERVICE_BASE_URL=http://api.ydzx.qyzhjy.com
|
||||
|
||||
VITE_SERVICE_BASE_URL=http://api.ydzx.qyzhjy.com
|
||||
VITE_SERVICE_BASE_URL=http://172.16.10.130:5000
|
||||
|
||||
VITE_OTHER_SERVICE_BASE_URL= `{
|
||||
"demo": "http://localhost:9528"
|
||||
|
||||
11
apps/admin/build/plugins/analyzer.ts
Normal file
@ -0,0 +1,11 @@
|
||||
import type { PluginOption } from 'vite'
|
||||
import { visualizer } from 'rollup-plugin-visualizer'
|
||||
|
||||
export function setupAnalyzer() {
|
||||
return visualizer({
|
||||
open: true,
|
||||
gzipSize: true,
|
||||
brotliSize: true,
|
||||
filename: 'report.html',
|
||||
}) as PluginOption
|
||||
}
|
||||
11
apps/admin/build/plugins/compression.ts
Normal file
@ -0,0 +1,11 @@
|
||||
import viteCompression from 'vite-plugin-compression'
|
||||
|
||||
export function setupCompression() {
|
||||
return viteCompression({
|
||||
verbose: true,
|
||||
disable: false,
|
||||
threshold: 10240,
|
||||
algorithm: 'gzip',
|
||||
ext: '.gz',
|
||||
})
|
||||
}
|
||||
21
apps/admin/build/plugins/deploy.ts
Normal file
@ -0,0 +1,21 @@
|
||||
import { viteAutoDeployPlugin } from 'vite-auto-deploy'
|
||||
import { name } from '../../package.json'
|
||||
|
||||
export function setupDeploy(isBuild: boolean) {
|
||||
return viteAutoDeployPlugin({
|
||||
/** 上传地址 */
|
||||
uploadUrl: 'http://47.109.17.238:8200/api/upload/code/deploy',
|
||||
/** 项目名称 (如果多个项目都是用的同上传地址时,服务端可用此字段区分是哪一个项目) */
|
||||
projectKey: name,
|
||||
/** 上传完成后,是否保留压缩包到本地 */
|
||||
saveLocalZip: true,
|
||||
/** 是否开启自动部署 */
|
||||
autoDeploy: isBuild,
|
||||
headers: {
|
||||
'Custom-Timestamp': new Date().getTime().toString(),
|
||||
'Custom-Run-Platform': 'app',
|
||||
'Custom-Device-Id': Math.random().toString(36).substring(2),
|
||||
'Custom-Os-Name': 'windows',
|
||||
},
|
||||
})
|
||||
}
|
||||
51
apps/admin/build/plugins/image-optimizer.ts
Normal file
@ -0,0 +1,51 @@
|
||||
import { ViteImageOptimizer } from 'vite-plugin-image-optimizer'
|
||||
|
||||
export function setupImageOptimizer() {
|
||||
return ViteImageOptimizer({
|
||||
logStats: true,
|
||||
|
||||
// SVG 优化配置
|
||||
svg: {
|
||||
multipass: true,
|
||||
plugins: [
|
||||
{
|
||||
name: 'preset-default',
|
||||
params: {
|
||||
overrides: {
|
||||
removeViewBox: false,
|
||||
cleanupIds: false,
|
||||
},
|
||||
},
|
||||
},
|
||||
'sortAttrs',
|
||||
],
|
||||
},
|
||||
|
||||
// PNG 高质量压缩
|
||||
png: {
|
||||
quality: 90,
|
||||
compressionLevel: 9,
|
||||
},
|
||||
|
||||
// JPEG 优化
|
||||
jpeg: {
|
||||
quality: 85,
|
||||
mozjpeg: true,
|
||||
},
|
||||
jpg: {
|
||||
quality: 85,
|
||||
mozjpeg: true,
|
||||
},
|
||||
|
||||
// WebP 转换
|
||||
webp: {
|
||||
quality: 80,
|
||||
lossless: false,
|
||||
force: true,
|
||||
},
|
||||
|
||||
includePublic: true,
|
||||
cache: true,
|
||||
cacheLocation: 'node_modules/.cache/image-optimizer',
|
||||
})
|
||||
}
|
||||
@ -2,14 +2,20 @@ import type { PluginOption } from 'vite'
|
||||
import vue from '@vitejs/plugin-vue'
|
||||
import vueJsx from '@vitejs/plugin-vue-jsx'
|
||||
import progress from 'vite-plugin-progress'
|
||||
import { setupAnalyzer } from './analyzer'
|
||||
import { setupCompression } from './compression'
|
||||
import { setupDeploy } from './deploy'
|
||||
import { setupDevtoolsPlugin } from './devtools'
|
||||
import { setupHtmlPlugin } from './html'
|
||||
import { setupImageOptimizer } from './image-optimizer'
|
||||
import { setupPWA } from './pwa'
|
||||
import { setupElegantRouter } from './router'
|
||||
import { setupUnocss } from './unocss'
|
||||
import { setupUnplugin } from './unplugin'
|
||||
|
||||
export function setupVitePlugins(viteEnv: Env.ImportMeta, buildTime: string) {
|
||||
export function setupVitePlugins(viteEnv: Env.ImportMeta, buildTime: string, isBuild: boolean) {
|
||||
const plugins: PluginOption = [
|
||||
// 基础插件
|
||||
vue(),
|
||||
vueJsx(),
|
||||
setupDevtoolsPlugin(viteEnv),
|
||||
@ -18,7 +24,18 @@ export function setupVitePlugins(viteEnv: Env.ImportMeta, buildTime: string) {
|
||||
...setupUnplugin(viteEnv),
|
||||
progress(),
|
||||
setupHtmlPlugin(buildTime),
|
||||
|
||||
// 优化插件
|
||||
setupImageOptimizer(),
|
||||
setupCompression(),
|
||||
setupPWA(),
|
||||
setupDeploy(isBuild),
|
||||
]
|
||||
|
||||
// 构建时添加打包分析插件
|
||||
if (isBuild) {
|
||||
plugins.push(setupAnalyzer())
|
||||
}
|
||||
|
||||
return plugins
|
||||
}
|
||||
|
||||
76
apps/admin/build/plugins/pwa.ts
Normal file
@ -0,0 +1,76 @@
|
||||
import type { PluginOption } from 'vite'
|
||||
import { VitePWA } from 'vite-plugin-pwa'
|
||||
|
||||
export function setupPWA(): PluginOption {
|
||||
return VitePWA({
|
||||
registerType: 'autoUpdate',
|
||||
// 添加 devOptions 以便在开发环境调试
|
||||
devOptions: {
|
||||
enabled: false, // 开发环境启用
|
||||
type: 'module',
|
||||
},
|
||||
workbox: {
|
||||
// 排除大型 SVG 文件,避免预缓存
|
||||
globIgnores: [
|
||||
'**/team-title-bg*.svg',
|
||||
'**/cover-bg-active*.svg',
|
||||
'**/*-bg-animation*.svg',
|
||||
],
|
||||
globPatterns: ['**/*.{js,css,html,ico,png,webp,jpg,jpeg}', '**/*.svg'],
|
||||
runtimeCaching: [
|
||||
// 字体缓存
|
||||
{
|
||||
urlPattern: /^https:\/\/fonts\.googleapis\.com\/.*/i,
|
||||
handler: 'CacheFirst',
|
||||
options: {
|
||||
cacheName: 'google-fonts-cache',
|
||||
expiration: {
|
||||
maxEntries: 10,
|
||||
maxAgeSeconds: 60 * 60 * 24 * 365, // 1 year
|
||||
},
|
||||
},
|
||||
},
|
||||
// 大型 SVG 文件运行时缓存
|
||||
{
|
||||
urlPattern: /.*\.(svg)$/,
|
||||
handler: 'CacheFirst',
|
||||
options: {
|
||||
cacheName: 'svg-cache',
|
||||
expiration: {
|
||||
maxEntries: 50,
|
||||
maxAgeSeconds: 60 * 60 * 24 * 30, // 30 days
|
||||
},
|
||||
},
|
||||
},
|
||||
// 图片资源缓存
|
||||
{
|
||||
urlPattern: /.*\.(png|jpg|jpeg|webp|gif)$/,
|
||||
handler: 'CacheFirst',
|
||||
options: {
|
||||
cacheName: 'images-cache',
|
||||
expiration: {
|
||||
maxEntries: 100,
|
||||
maxAgeSeconds: 60 * 60 * 24 * 30, // 30 days
|
||||
},
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
includeAssets: ['favicon.ico', 'apple-touch-icon.png', 'masked-icon.svg'],
|
||||
manifest: {
|
||||
name: '阅读之星竞赛系统',
|
||||
short_name: '阅读之星',
|
||||
description: '树人研究院阅读之星竞赛系统',
|
||||
theme_color: '#ffffff',
|
||||
background_color: '#ffffff',
|
||||
display: 'standalone',
|
||||
orientation: 'landscape',
|
||||
icons: [
|
||||
{ src: 'images/pwa_logo_192.png', sizes: '192x192', type: 'image/png' },
|
||||
{ src: 'images/pwa_logo_512.png', sizes: '512x512', type: 'image/png' },
|
||||
{ src: 'images/pwa_logo_512.png', sizes: '512x512', type: 'image/png', purpose: 'any' },
|
||||
{ src: 'images/pwa_logo_512.png', sizes: '512x512', type: 'image/png', purpose: 'maskable' },
|
||||
],
|
||||
},
|
||||
})
|
||||
}
|
||||
@ -2,7 +2,7 @@
|
||||
<html lang="zh-cmn-Hans">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<link rel="icon" href="/favicon.svg" />
|
||||
<link rel="icon" href="/favicon.ico" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<meta name="color-scheme" content="light dark" />
|
||||
<title>%VITE_APP_TITLE%</title>
|
||||
|
||||
@ -16,7 +16,7 @@
|
||||
"dev": "vite --mode dev",
|
||||
"dev:prod": "vite --mode prod",
|
||||
"gen-route": "sa gen-route",
|
||||
"lint": "eslint . --fix",
|
||||
"lint": "eslint src --fix",
|
||||
"prepare": "simple-git-hooks",
|
||||
"preview": "vite preview",
|
||||
"release": "sa release",
|
||||
@ -82,6 +82,7 @@
|
||||
"eslint": "9.39.2",
|
||||
"eslint-plugin-vue": "10.6.2",
|
||||
"kolorist": "1.8.0",
|
||||
"rollup-plugin-visualizer": "^7.0.1",
|
||||
"sass": "1.97.1",
|
||||
"simple-git-hooks": "2.13.1",
|
||||
"tsx": "4.21.0",
|
||||
@ -90,7 +91,10 @@
|
||||
"unplugin-vue-components": "30.0.0",
|
||||
"vite": "7.3.0",
|
||||
"vite-auto-deploy": "^2.0.34",
|
||||
"vite-plugin-compression": "^0.5.1",
|
||||
"vite-plugin-image-optimizer": "^2.0.3",
|
||||
"vite-plugin-progress": "0.0.7",
|
||||
"vite-plugin-pwa": "^1.2.0",
|
||||
"vite-plugin-svg-icons": "2.0.1",
|
||||
"vite-plugin-vue-devtools": "8.0.5",
|
||||
"vue-eslint-parser": "10.2.0",
|
||||
|
||||
BIN
apps/admin/public/favicon.ico
Normal file
|
After Width: | Height: | Size: 3.6 KiB |
@ -1,60 +0,0 @@
|
||||
<svg width="100%" height="100%" version="1.1" viewBox="0 0 1000 1000" xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<g>
|
||||
<path
|
||||
d="M 200,866 C 100,866 50,779.4 100,692.8 L 200,519.6 C 220,485 240,490 265,499.6 S 360,542.68 360,542.68 C 480.5,601 498,642.5 500,720 C 498,811 462,856 420,866"
|
||||
fill="url(#LinearGradient)" fill-rule="nonzero" opacity="1" stroke="none" />
|
||||
<path
|
||||
d="M 420,866 C 455,861 478,846 500,827 C 614,696 615,597 500,517 C 394,444 333,374 380,207.82 L 260,415.67 C 240.22,450 254.37,465.1 275.28,481.79 S 360,542.68 360,542.68 C 480.5,601 498,642.5 500,720 C 498,811 462,856 420,866"
|
||||
fill="url(#LinearGradient_2)" fill-rule="nonzero" opacity="1" stroke="none" />
|
||||
<path d="M 500,517 C 394,444 333,374 380,207.82 L 400,173.2 C 367,295 421,350 603,428 C 572,440 524,474 500,517"
|
||||
fill="url(#LinearGradient_3)" fill-rule="nonzero" opacity="1" stroke="none" />
|
||||
<path d="M 500,827 L 660,660 C 738,589 710,482 603,428 C 572,440 524,474 500,517 C 615,597 614,696 500,827"
|
||||
fill="url(#LinearGradient_4)" fill-rule="nonzero" opacity="1" stroke="none" />
|
||||
<path d="M 400,173.2 C 367,295 421,350 603,428 C 690,389, 750,445 788,500 L 600,173.2 C 550,86.6 450,86.6 400,173.2"
|
||||
fill="url(#LinearGradient_5)" fill-rule="nonzero" opacity="1" stroke="none" />
|
||||
<path
|
||||
d="M 500,827 L 660,660 C 738,589 710,482 603,428 C 690,389, 750,445 788,500 C 816,554 797,606 750,640 L 500,827"
|
||||
fill="url(#LinearGradient_6)" fill-rule="nonzero" opacity="1" stroke="none" />
|
||||
<path
|
||||
d="M 788,500 C 816,554 797,606 750,640 L 500,827 C 497,851 513,862 540,866 L 800,866 C 900,866 950,779.4 900,692.8 L 788,500"
|
||||
fill="url(#LinearGradient_7)" fill-rule="nonzero" opacity="1" stroke="none" />
|
||||
</g>
|
||||
<defs>
|
||||
<linearGradient gradientTransform="matrix(104.391 -73.3432 73.3432 104.391 277.441 710.122)"
|
||||
gradientUnits="userSpaceOnUse" id="LinearGradient" x1="0" x2="1" y1="0" y2="0">
|
||||
<stop offset="0" stop-color="#373ebf" />
|
||||
<stop offset="1" stop-color="#5058e6" />
|
||||
</linearGradient>
|
||||
<linearGradient gradientTransform="matrix(-173.747 557.324 -557.324 -173.747 508.829 258.172)"
|
||||
gradientUnits="userSpaceOnUse" id="LinearGradient_2" x1="0" x2="1" y1="0" y2="0">
|
||||
<stop offset="0" stop-color="#c2d6ff" />
|
||||
<stop offset="1" stop-color="#646cff" />
|
||||
</linearGradient>
|
||||
<linearGradient gradientTransform="matrix(157.951 295.666 -295.666 157.951 382.944 193.642)"
|
||||
gradientUnits="userSpaceOnUse" id="LinearGradient_3" x1="0" x2="1" y1="0" y2="0">
|
||||
<stop offset="0" stop-color="#5058e6" />
|
||||
<stop offset="1" stop-color="#373ebf" />
|
||||
</linearGradient>
|
||||
<linearGradient gradientTransform="matrix(-44.3023 219.578 -219.578 -44.3023 619.69 469.652)"
|
||||
gradientUnits="userSpaceOnUse" id="LinearGradient_4" x1="0" x2="1" y1="0" y2="0">
|
||||
<stop offset="0" stop-color="#91a7ff" />
|
||||
<stop offset="1" stop-color="#5058e6" />
|
||||
</linearGradient>
|
||||
<linearGradient gradientTransform="matrix(125.52 334.256 -334.256 125.52 539.723 235.139)"
|
||||
gradientUnits="userSpaceOnUse" id="LinearGradient_5" x1="0" x2="1" y1="0" y2="0">
|
||||
<stop offset="0" stop-color="#646cff" />
|
||||
<stop offset="1" stop-color="#c2d6ff" />
|
||||
</linearGradient>
|
||||
<linearGradient gradientTransform="matrix(-241.23 357.206 -357.206 -241.23 754.054 449.312)"
|
||||
gradientUnits="userSpaceOnUse" id="LinearGradient_6" x1="0" x2="1" y1="0" y2="0">
|
||||
<stop offset="0" stop-color="#c2d6ff" />
|
||||
<stop offset="1" stop-color="#646cff" />
|
||||
</linearGradient>
|
||||
<linearGradient gradientTransform="matrix(125.978 210.065 -210.065 125.978 596.433 613.665)"
|
||||
gradientUnits="userSpaceOnUse" id="LinearGradient_7" x1="0" x2="1" y1="0" y2="0">
|
||||
<stop offset="0" stop-color="#373ebf" />
|
||||
<stop offset="1" stop-color="#5058e6" />
|
||||
</linearGradient>
|
||||
</defs>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 3.8 KiB |
BIN
apps/admin/public/images/apple-touch-icon.png
Normal file
|
After Width: | Height: | Size: 2.4 KiB |
BIN
apps/admin/public/images/favicon.ico
Normal file
|
After Width: | Height: | Size: 3.6 KiB |
BIN
apps/admin/public/images/favicon.png
Normal file
|
After Width: | Height: | Size: 1.1 KiB |
1
apps/admin/public/images/nonsupport.svg
Normal file
|
After Width: | Height: | Size: 14 KiB |
BIN
apps/admin/public/images/pwa_logo_192.png
Normal file
|
After Width: | Height: | Size: 2.5 KiB |
BIN
apps/admin/public/images/pwa_logo_512.png
Normal file
|
After Width: | Height: | Size: 5.5 KiB |
4950
apps/admin/report.html
Normal file
BIN
apps/admin/src/assets/imgs/logo/cq-logo.png
Normal file
|
After Width: | Height: | Size: 578 KiB |
BIN
apps/admin/src/assets/imgs/logo/cq-logo.webp
Normal file
|
After Width: | Height: | Size: 167 KiB |
BIN
apps/admin/src/assets/imgs/logo/qw-logo.png
Normal file
|
After Width: | Height: | Size: 487 KiB |
BIN
apps/admin/src/assets/imgs/logo/qw-logo.webp
Normal file
|
After Width: | Height: | Size: 184 KiB |
BIN
apps/admin/src/assets/imgs/logo/text-logo.png
Normal file
|
After Width: | Height: | Size: 168 KiB |
BIN
apps/admin/src/assets/imgs/logo/text-logo.webp
Normal file
|
After Width: | Height: | Size: 116 KiB |
BIN
apps/admin/src/assets/imgs/user/3 310372448.png
Normal file
|
After Width: | Height: | Size: 487 KiB |
BIN
apps/admin/src/assets/imgs/user/btn-bg.png
Normal file
|
After Width: | Height: | Size: 12 KiB |
BIN
apps/admin/src/assets/imgs/user/content-bg.png
Normal file
|
After Width: | Height: | Size: 181 KiB |
BIN
apps/admin/src/assets/imgs/user/cover-back.webp
Normal file
|
After Width: | Height: | Size: 304 KiB |
BIN
apps/admin/src/assets/imgs/user/cover-bg-active.jpg
Normal file
|
After Width: | Height: | Size: 1.5 MiB |
|
Before Width: | Height: | Size: 2.7 MiB |
BIN
apps/admin/src/assets/imgs/user/draw.webp
Normal file
|
After Width: | Height: | Size: 133 KiB |
BIN
apps/admin/src/assets/imgs/user/dui-kuang.png
Normal file
|
After Width: | Height: | Size: 17 KiB |
BIN
apps/admin/src/assets/imgs/user/dui-text-bg.png
Normal file
|
After Width: | Height: | Size: 13 KiB |
|
Before Width: | Height: | Size: 3.8 MiB |
BIN
apps/admin/src/assets/imgs/user/event-card-bg-icon.webp
Normal file
|
After Width: | Height: | Size: 740 KiB |
|
Before Width: | Height: | Size: 7.2 MiB |
BIN
apps/admin/src/assets/imgs/user/event-card-bg.webp
Normal file
|
After Width: | Height: | Size: 445 KiB |
BIN
apps/admin/src/assets/imgs/user/home-bg.jpg
Normal file
|
After Width: | Height: | Size: 1.1 MiB |
BIN
apps/admin/src/assets/imgs/user/home-bg.webp
Normal file
|
After Width: | Height: | Size: 797 KiB |
BIN
apps/admin/src/assets/imgs/user/home-bg1.webp
Normal file
|
After Width: | Height: | Size: 811 KiB |
BIN
apps/admin/src/assets/imgs/user/progress-title.png
Normal file
|
After Width: | Height: | Size: 200 KiB |
BIN
apps/admin/src/assets/imgs/user/read-logo 1.webp
Normal file
|
After Width: | Height: | Size: 172 KiB |
BIN
apps/admin/src/assets/imgs/user/short-content-bg.png
Normal file
|
After Width: | Height: | Size: 28 KiB |
|
Before Width: | Height: | Size: 10 MiB |
BIN
apps/admin/src/assets/imgs/user/star-icon.webp
Normal file
|
After Width: | Height: | Size: 126 KiB |
BIN
apps/admin/src/assets/imgs/user/team-bg-animation.webp
Normal file
|
After Width: | Height: | Size: 907 KiB |
|
Before Width: | Height: | Size: 16 MiB |
BIN
apps/admin/src/assets/imgs/user/team-bg.webp
Normal file
|
After Width: | Height: | Size: 907 KiB |
|
Before Width: | Height: | Size: 5.5 MiB |
BIN
apps/admin/src/assets/imgs/user/team-title-icon.webp
Normal file
|
After Width: | Height: | Size: 121 KiB |
|
Before Width: | Height: | Size: 3.2 MiB |
BIN
apps/admin/src/assets/imgs/user/title-bg.webp
Normal file
|
After Width: | Height: | Size: 549 KiB |
|
Before Width: | Height: | Size: 3.0 MiB |
BIN
apps/admin/src/assets/imgs/user/title-bg2.webp
Normal file
|
After Width: | Height: | Size: 449 KiB |
BIN
apps/admin/src/assets/imgs/user/title-bg3.png
Normal file
|
After Width: | Height: | Size: 153 KiB |
BIN
apps/admin/src/assets/imgs/user/title-bg4.png
Normal file
|
After Width: | Height: | Size: 306 KiB |
|
Before Width: | Height: | Size: 468 KiB After Width: | Height: | Size: 468 KiB |
@ -1,5 +1,6 @@
|
||||
<script setup lang="ts">
|
||||
// import { defineProps, defineEmits } from 'vue';
|
||||
import { computed } from 'vue'
|
||||
import defaultBtnBg from '@/assets/imgs/user/btn-bg.png'
|
||||
|
||||
const props = defineProps({
|
||||
text: {
|
||||
@ -15,13 +16,25 @@ const props = defineProps({
|
||||
default: 'primary',
|
||||
},
|
||||
type: {
|
||||
type: String as () => 'button' | 'text',
|
||||
type: String as () => 'button' | 'text' | 'custom',
|
||||
default: 'button',
|
||||
},
|
||||
btnBg: {
|
||||
type: String,
|
||||
default: defaultBtnBg,
|
||||
},
|
||||
fontSize: {
|
||||
type: Number,
|
||||
default: 30,
|
||||
},
|
||||
})
|
||||
|
||||
const emits = defineEmits(['click'])
|
||||
|
||||
const isCustom = computed(() => props.type === 'custom')
|
||||
|
||||
const customBg = computed(() => `url(${props.btnBg}) no-repeat center / 100% 100%`)
|
||||
|
||||
function handleClick() {
|
||||
if (!props.disabled) {
|
||||
emits('click')
|
||||
@ -32,33 +45,52 @@ function handleClick() {
|
||||
<template>
|
||||
<button
|
||||
class="action-btn"
|
||||
:class="[theme, { 'is-disabled': disabled, 'text-btn': type === 'text' }]"
|
||||
:class="[
|
||||
isCustom ? 'custom-btn' : 'standard-btn',
|
||||
theme,
|
||||
type,
|
||||
{ 'is-disabled': disabled },
|
||||
]"
|
||||
@click="handleClick"
|
||||
>
|
||||
<span v-if="type === 'text'" class="btn-text">{{ text }}</span>
|
||||
<span v-if="type === 'text' || type === 'custom'" class="btn-text">{{ text }}</span>
|
||||
<slot v-else />
|
||||
</button>
|
||||
</template>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.action-btn {
|
||||
width: 50px;
|
||||
height: 50px;
|
||||
border-radius: 50%;
|
||||
border: none;
|
||||
color: white;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
cursor: pointer;
|
||||
transition: all 0.2s ease;
|
||||
border: none;
|
||||
outline: none;
|
||||
font-family: inherit;
|
||||
|
||||
&.is-disabled {
|
||||
cursor: not-allowed;
|
||||
filter: grayscale(1);
|
||||
opacity: 0.7;
|
||||
|
||||
&:hover,
|
||||
&:active {
|
||||
transform: none !important;
|
||||
box-shadow: inherit !important;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// standard: type="button" | type="text"
|
||||
.standard-btn {
|
||||
width: 50px;
|
||||
height: 50px;
|
||||
border-radius: 50%;
|
||||
color: white;
|
||||
background: #eb5e55;
|
||||
box-shadow: 0 8px 0 #fcc64f;
|
||||
|
||||
.arrow-icon {
|
||||
font-size: 32px;
|
||||
}
|
||||
|
||||
&:hover {
|
||||
transform: translateY(-2px);
|
||||
filter: brightness(1.05);
|
||||
@ -70,7 +102,17 @@ function handleClick() {
|
||||
box-shadow: 0 2px 0 #fcc64f;
|
||||
}
|
||||
|
||||
&.text-btn {
|
||||
&.light {
|
||||
background: white;
|
||||
color: #eb5e55;
|
||||
border: 2px solid #eb5e55;
|
||||
|
||||
&:hover {
|
||||
background-color: #fff;
|
||||
}
|
||||
}
|
||||
|
||||
&.text {
|
||||
width: auto;
|
||||
min-width: 180px;
|
||||
padding: 0 30px;
|
||||
@ -82,35 +124,38 @@ function handleClick() {
|
||||
letter-spacing: 2px;
|
||||
}
|
||||
}
|
||||
|
||||
&.is-disabled {
|
||||
cursor: not-allowed;
|
||||
|
||||
&:hover {
|
||||
transform: none;
|
||||
}
|
||||
|
||||
&:active {
|
||||
transform: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.light {
|
||||
background: white;
|
||||
color: #eb5e55;
|
||||
border: 2px solid #eb5e55;
|
||||
box-shadow: 0 8px 0 #fcc64f;
|
||||
// custom: type="custom",背景完全由 btnBg 决定
|
||||
.custom-btn {
|
||||
background: v-bind(customBg);
|
||||
background-color: transparent;
|
||||
min-width: 210px;
|
||||
width: auto;
|
||||
height: 60px;
|
||||
padding: 0 20px;
|
||||
box-shadow: none;
|
||||
color: rgb(0, 94, 174);
|
||||
|
||||
.btn-text {
|
||||
font-size: v-bind('`${fontSize}px`');
|
||||
font-weight: bold;
|
||||
letter-spacing: 2px;
|
||||
margin-bottom: 7px;
|
||||
}
|
||||
|
||||
&.is-disabled {
|
||||
color: #eb5e55;
|
||||
filter: none;
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
&:hover {
|
||||
background-color: #fff;
|
||||
transform: translateY(-3px);
|
||||
box-shadow: 0 10px 0 #fcc64f;
|
||||
transform: scale(1.05);
|
||||
}
|
||||
|
||||
&:active {
|
||||
transform: translateY(4px);
|
||||
box-shadow: 0 2px 0 #fcc64f;
|
||||
transform: scale(0.95);
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
||||
@ -1,9 +1,15 @@
|
||||
<!-- eslint-disable unused-imports/no-unused-vars -->
|
||||
<script lang="ts" setup>
|
||||
import VScaleScreen from 'v-scale-screen'
|
||||
import { computed, onMounted, ref } from 'vue'
|
||||
import _defaultBg from '@/assets/imgs/user/home-bg.svg'
|
||||
import titleBg2 from '@/assets/imgs/user/title-bg2.svg'
|
||||
import _defaultTitleBg from '@/assets/imgs/user/title-bg.svg'
|
||||
import { computed, onMounted, ref, watch } from 'vue'
|
||||
import cqLogo from '@/assets/imgs/logo/cq-logo.webp'
|
||||
import srLogo from '@/assets/imgs/logo/qw-logo.webp'
|
||||
import qwLogo from '@/assets/imgs/logo/text-logo.webp'
|
||||
import _defaultBg from '@/assets/imgs/user/home-bg1.webp'
|
||||
import titleBg2 from '@/assets/imgs/user/title-bg2.webp'
|
||||
import titleBg3 from '@/assets/imgs/user/title-bg3.png'
|
||||
import titleBg4 from '@/assets/imgs/user/title-bg4.png'
|
||||
import _defaultTitleBg from '@/assets/imgs/user/title-bg.webp'
|
||||
import { useRouterPush } from '@/hooks/common/router'
|
||||
|
||||
import ActionButton from './ActionButton.vue'
|
||||
@ -29,12 +35,16 @@ interface Props {
|
||||
btnTheme?: 'primary' | 'light'
|
||||
/** 是否禁用下一步按钮 */
|
||||
nextDisabled?: boolean
|
||||
/** 标题区域背景图片URL,不传则使用默认 title-bg.svg */
|
||||
/** 标题区域背景图片URL,不传则使用默认 title-bg.webp */
|
||||
titleBgType?: number
|
||||
/** 是否显示第二个下一步按钮 */
|
||||
showNextBtn2?: boolean
|
||||
/** 第二个按钮的文本 */
|
||||
nextBtnText2?: string
|
||||
/** title 颜色 */
|
||||
titleTextColor?: string
|
||||
/* 按钮字体大小 */
|
||||
fontSize?: number
|
||||
}
|
||||
|
||||
const props = withDefaults(defineProps<Props>(), {
|
||||
@ -51,6 +61,8 @@ const props = withDefaults(defineProps<Props>(), {
|
||||
titleBgType: 1,
|
||||
showNextBtn2: false,
|
||||
nextBtnText2: undefined,
|
||||
titleTextColor: '#000000',
|
||||
fontSize: 30,
|
||||
})
|
||||
|
||||
const emit = defineEmits<{
|
||||
@ -62,11 +74,16 @@ const emit = defineEmits<{
|
||||
const titleBgUrlMapping: Record<number, string> = {
|
||||
1: _defaultTitleBg,
|
||||
2: titleBg2,
|
||||
3: titleBg3,
|
||||
4: titleBg4,
|
||||
}
|
||||
|
||||
const { routerPushByKey } = useRouterPush()
|
||||
|
||||
const titleBgUrl = computed(() => titleBgUrlMapping[props.titleBgType] || _defaultBg)
|
||||
const titleBgLoaded = ref(false)
|
||||
const currentTitleBg = ref('')
|
||||
const imageLoadStatus = ref<Record<string, boolean>>({})
|
||||
|
||||
// const router = useRouter()
|
||||
const innerBgUrl = ref(_defaultBg)
|
||||
@ -110,10 +127,62 @@ function handleBackHome() {
|
||||
}
|
||||
|
||||
onMounted(() => {
|
||||
fetchSystemConfig()
|
||||
setTimeout(() => {
|
||||
showContent.value = true
|
||||
}, 100)
|
||||
// 预加载所有标题背景图,并跟踪加载状态
|
||||
const preloadAllImages = () => {
|
||||
const promises = Object.entries(titleBgUrlMapping).map(([_key, url]) => {
|
||||
return new Promise((resolve) => {
|
||||
const img = new Image()
|
||||
img.onload = () => {
|
||||
imageLoadStatus.value[url] = true
|
||||
resolve(true)
|
||||
}
|
||||
img.onerror = () => {
|
||||
imageLoadStatus.value[url] = false
|
||||
resolve(false)
|
||||
}
|
||||
img.src = url
|
||||
})
|
||||
})
|
||||
|
||||
// 也预加载默认背景
|
||||
const defaultBgPromise = new Promise((resolve) => {
|
||||
const img = new Image()
|
||||
img.onload = () => {
|
||||
imageLoadStatus.value[_defaultBg] = true
|
||||
resolve(true)
|
||||
}
|
||||
img.onerror = () => {
|
||||
imageLoadStatus.value[_defaultBg] = false
|
||||
resolve(false)
|
||||
}
|
||||
img.src = _defaultBg
|
||||
})
|
||||
|
||||
return Promise.all([...promises, defaultBgPromise])
|
||||
}
|
||||
|
||||
// 开始预加载
|
||||
preloadAllImages()
|
||||
.then(() => {
|
||||
// 所有图片预加载完成后,设置当前背景
|
||||
currentTitleBg.value = titleBgUrl.value
|
||||
titleBgLoaded.value = true
|
||||
|
||||
fetchSystemConfig()
|
||||
setTimeout(() => {
|
||||
showContent.value = true
|
||||
}, 100)
|
||||
})
|
||||
.catch(() => {
|
||||
// 即使预加载失败也继续
|
||||
currentTitleBg.value = titleBgUrl.value
|
||||
titleBgLoaded.value = true
|
||||
|
||||
fetchSystemConfig()
|
||||
setTimeout(() => {
|
||||
showContent.value = true
|
||||
}, 100)
|
||||
})
|
||||
|
||||
// 延迟显示内容,等待标题卷轴展开
|
||||
const delay = props.showTitle ? 500 : 100
|
||||
@ -126,6 +195,28 @@ onMounted(() => {
|
||||
showButton.value = true
|
||||
}, delay + 500)
|
||||
})
|
||||
|
||||
// 监听 titleBgUrl 变化,确保图片切换平滑
|
||||
watch(titleBgUrl, (newUrl) => {
|
||||
if (newUrl && imageLoadStatus.value[newUrl]) {
|
||||
// 如果图片已经加载过,直接切换
|
||||
currentTitleBg.value = newUrl
|
||||
}
|
||||
else if (newUrl) {
|
||||
// 如果图片还没加载,预加载它
|
||||
const img = new Image()
|
||||
img.onload = () => {
|
||||
imageLoadStatus.value[newUrl] = true
|
||||
currentTitleBg.value = newUrl
|
||||
}
|
||||
img.onerror = () => {
|
||||
imageLoadStatus.value[newUrl] = false
|
||||
// 加载失败时使用默认背景
|
||||
currentTitleBg.value = _defaultBg
|
||||
}
|
||||
img.src = newUrl
|
||||
}
|
||||
})
|
||||
</script>
|
||||
|
||||
<template>
|
||||
@ -133,12 +224,24 @@ onMounted(() => {
|
||||
<!-- Background Layer (Outside Scale to cover full screen) -->
|
||||
<div class="fixed-bg" :style="innerBgUrl ? { backgroundImage: `url(${innerBgUrl})` } : {}" />
|
||||
|
||||
<VScaleScreen width="1920" height="1080">
|
||||
<VScaleScreen width="2048" height="1080">
|
||||
<div class="competition-layout">
|
||||
<!-- Header -->
|
||||
<header class="page-header text-[30px] text-[#333333] font-bold">
|
||||
<span class="org-name" @click="handleBackHome">教育学会</span>
|
||||
<span class="org-name">树人研究院</span>
|
||||
<header class="page-header flex items-center px-8 text-[30px] text-[#333333] font-bold">
|
||||
<!-- 左侧logo -->
|
||||
<div class="flex cursor-pointer items-center" @click="handleBackHome">
|
||||
<img :src="cqLogo" alt="重庆logo" class="h-20 w-auto">
|
||||
</div>
|
||||
|
||||
<!-- 中间文字 -->
|
||||
<div class="flex flex-1 justify-center">
|
||||
<img :src="qwLogo" alt="重庆logo" class="h-14 w-auto">
|
||||
</div>
|
||||
|
||||
<!-- 右侧logo组 -->
|
||||
<div class="flex items-center justify-end gap-4">
|
||||
<img :src="srLogo" alt="树人logo" class="h-19 w-auto">
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<div class="glass-overlay">
|
||||
@ -146,9 +249,17 @@ onMounted(() => {
|
||||
<section v-if="showTitle" class="title-section">
|
||||
<Transition name="scroll-unfold" appear>
|
||||
<div v-if="showContent" class="title-wrapper">
|
||||
<div class="scroll-bg" :style="{ backgroundImage: `url(${titleBgUrl})` }">
|
||||
<div class="scroll-bg">
|
||||
<!-- 预渲染所有背景图,用 opacity 切换避免加载抖动 -->
|
||||
<img
|
||||
v-for="(url, _key) in titleBgUrlMapping" :key="_key" :src="url" class="scroll-bg-img" :class="{
|
||||
active: titleBgUrl === url && imageLoadStatus[url] !== false,
|
||||
loading: imageLoadStatus[url] === undefined,
|
||||
}" :style="{ visibility: imageLoadStatus[url] === false ? 'hidden' : 'visible' }" aria-hidden="true"
|
||||
@load="imageLoadStatus[url] = true" @error="imageLoadStatus[url] = false"
|
||||
>
|
||||
<Transition name="fade-in-delay" appear>
|
||||
<h1 v-if="showContent" class="main-title">
|
||||
<h1 v-if="showContent" class="main-title" :style="{ color: titleTextColor }">
|
||||
{{ title }}
|
||||
</h1>
|
||||
</Transition>
|
||||
@ -166,14 +277,13 @@ onMounted(() => {
|
||||
|
||||
<!-- Footer Action -->
|
||||
<footer
|
||||
v-if="showButton"
|
||||
class="page-footer w-full flex items-center justify-between px-20"
|
||||
v-if="showButton" class="page-footer w-full flex items-center justify-between px-20"
|
||||
:class="[actionPosition, btnTheme]"
|
||||
>
|
||||
<div class="left">
|
||||
<ActionButton
|
||||
class="back-btn" :style="{ visibility: showBack ? 'visible' : 'hidden' }"
|
||||
:type="backBtnText ? 'text' : 'button'" :text="backBtnText || ''" :theme="btnTheme" @click="handleBack"
|
||||
class="back-btn" :style="{ visibility: showBack ? 'visible' : 'hidden' }" type="custom"
|
||||
:text="backBtnText || ''" :theme="btnTheme" :font-size="fontSize" @click="handleBack"
|
||||
>
|
||||
<SvgIcon v-if="!backBtnText" icon="mdi:arrow-left" size="40" class="arrow-icon" />
|
||||
</ActionButton>
|
||||
@ -181,8 +291,8 @@ onMounted(() => {
|
||||
|
||||
<div class="right">
|
||||
<ActionButton
|
||||
v-if="showNext" :type="nextBtnText ? 'text' : 'button'" :text="nextBtnText || '下一步'"
|
||||
:theme="btnTheme" :disabled="nextDisabled" @click="handleNext"
|
||||
v-if="showNext" type="custom" :text="nextBtnText || '下一步'" :theme="btnTheme"
|
||||
:disabled="nextDisabled" :font-size="fontSize" @click="handleNext"
|
||||
>
|
||||
<SvgIcon v-if="!nextBtnText" icon="mdi:arrow-right" class="arrow-icon" size="40" />
|
||||
</ActionButton>
|
||||
@ -207,27 +317,50 @@ onMounted(() => {
|
||||
width: 412px;
|
||||
height: 165px;
|
||||
display: flex;
|
||||
justify-content: center; /* Ensure wrapper stays centered during expansion */
|
||||
justify-content: center;
|
||||
/* Ensure wrapper stays centered during expansion */
|
||||
|
||||
.title-wrapper {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
overflow: hidden;
|
||||
display: flex;
|
||||
justify-content: center; /* Keep the background image centered */
|
||||
justify-content: center;
|
||||
/* Keep the background image centered */
|
||||
}
|
||||
|
||||
.scroll-bg {
|
||||
width: 412px !important; /* Fixed width to prevent squishing during animation */
|
||||
height: 165px !important;
|
||||
width: 400px !important;
|
||||
/* Fixed width to prevent squishing during animation */
|
||||
height: 155px !important;
|
||||
position: relative;
|
||||
background: no-repeat center center;
|
||||
background-size: 100% 100%;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
padding-bottom: 10px;
|
||||
flex-shrink: 0; /* Prevent shrinking */
|
||||
flex-shrink: 0;
|
||||
/* Prevent shrinking */
|
||||
|
||||
.scroll-bg-img {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
object-fit: contain;
|
||||
opacity: 0;
|
||||
transition: opacity 0.5s ease;
|
||||
pointer-events: none;
|
||||
|
||||
&.active {
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
&.loading {
|
||||
opacity: 0;
|
||||
filter: blur(2px);
|
||||
}
|
||||
}
|
||||
|
||||
.main-title {
|
||||
font-size: 2.5rem;
|
||||
@ -235,7 +368,10 @@ onMounted(() => {
|
||||
margin: 0;
|
||||
letter-spacing: 4px;
|
||||
text-align: center;
|
||||
white-space: nowrap; /* Prevent text wrapping */
|
||||
white-space: nowrap;
|
||||
/* Prevent text wrapping */
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -271,9 +407,11 @@ onMounted(() => {
|
||||
overflow: hidden;
|
||||
position: relative;
|
||||
font-family: 'Noto Serif SC', serif;
|
||||
z-index: 1; // 确保内容在背景之上
|
||||
z-index: 2; // 确保内容在背景之上
|
||||
// margin: 10px auto;
|
||||
margin-top: 28px;
|
||||
|
||||
// Default background decoration (Bottom Wave)
|
||||
// 底部波浪背景
|
||||
&::before {
|
||||
content: '';
|
||||
position: absolute;
|
||||
@ -292,7 +430,7 @@ onMounted(() => {
|
||||
.glass-overlay {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background: rgba(255, 255, 255, 0.5);
|
||||
background: rgba(255, 255, 255, 0.6);
|
||||
backdrop-filter: blur(2px);
|
||||
border-radius: 30px;
|
||||
box-shadow: 0 8px 32px 0 rgba(31, 38, 135, 0.1);
|
||||
@ -306,7 +444,7 @@ onMounted(() => {
|
||||
|
||||
.page-header {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
top: -20px;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
display: flex;
|
||||
@ -360,7 +498,8 @@ onMounted(() => {
|
||||
|
||||
.fade-in-delay-enter-active {
|
||||
transition: opacity 0.8s ease;
|
||||
transition-delay: 1s; /* Wait for scroll to unfold */
|
||||
transition-delay: 1s;
|
||||
/* Wait for scroll to unfold */
|
||||
}
|
||||
|
||||
.fade-in-delay-enter-from {
|
||||
|
||||
@ -43,6 +43,3 @@ const _props = withDefaults(defineProps<Props>(), {
|
||||
<slot />
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<style scoped>
|
||||
</style>
|
||||
|
||||
@ -21,11 +21,17 @@ export enum QuestionType {
|
||||
}
|
||||
|
||||
export enum QuestionCategoryEnum {
|
||||
ChineseCharacterDictation1 = 'ChineseCharacterDictation1', // 汉字听写-提示 (jiu表示小鸟的叫声)
|
||||
ChineseCharacterDictation2 = 'ChineseCharacterDictation2', // 根据拼音写汉字-提示 (tang)
|
||||
CharacterRadicalAddition = 'CharacterRadicalAddition', // 汉字加一加 (车)
|
||||
WordDictation = 'WordDictation', // 词语听写 (zhi re)
|
||||
IdiomWriting1 = 'IdiomWriting1', // 成语-文字要求 (反义字)
|
||||
IdiomWriting2 = 'IdiomWriting2', // 成语-文字要求 (看图写成语)
|
||||
PoetryComprehension = 'PoetryComprehension', // 诗词理解-选择题
|
||||
ChineseCharacterDictation1 = 'ChineseCharacterDictation1', // 1. 汉字听写-提示 (jiu表示小鸟的叫声)
|
||||
ChineseCharacterDictation2 = 'ChineseCharacterDictation2', // 2. 根据拼音写汉字-提示 (tang)
|
||||
CharacterRadicalAddition = 'CharacterRadicalAddition', // 3. 汉字加一加 (车)
|
||||
WordDictation = 'WordDictation', // 4. 词语听写 (zhi re)
|
||||
IdiomWriting1 = 'IdiomWriting1', // 5. 成语-文字要求
|
||||
IdiomWriting2 = 'IdiomWriting2', // 6. 成语-文字要求 (看图写成语)
|
||||
PoetryComprehension = 'PoetryComprehension', // 7. 诗词理解-选择题
|
||||
ReversePoemMatching = 'ReversePoemMatching', // 8. 逆向接诗句
|
||||
SceneBasedPoemGuessing = 'SceneBasedPoemGuessing', // 9. 场景猜诗句
|
||||
AssociationMatching = 'AssociationMatching', // 10. 联想对对碰
|
||||
CharacterWordFlowerDrinkingGame = 'CharacterWordFlowerDrinkingGame', // 11. 字词飞花令
|
||||
PoetryCommonKnowledge = 'PoetryCommonKnowledge', // 12. 诗词常识
|
||||
ChangeWords = 'ChangeWords', // 13. 换字组成语
|
||||
}
|
||||
|
||||
@ -49,31 +49,11 @@ export function fetchGetQuestionLibraryListAll(params: Api.Question.GetQuestionL
|
||||
}
|
||||
|
||||
/** 新增一条问题库 */
|
||||
export function fetchAddQuestionLibrary(params: Api.Question.AddQuestionLibraryParams, file?: File | null) {
|
||||
const formData = new FormData()
|
||||
if (file) {
|
||||
formData.append('Image', file)
|
||||
}
|
||||
export function fetchAddQuestionLibrary(params: Api.Question.AddQuestionLibraryParams) {
|
||||
return request<Api.Question.CommonRecord>({
|
||||
url: '/Base/ActivityMain/AddQuestionListDetail',
|
||||
method: 'post',
|
||||
// params: {
|
||||
// QuestionId: params.questionId,
|
||||
// Name: params.name,
|
||||
// Answer: params.answer,
|
||||
// Type: params.type,
|
||||
// IsGood: params.IsGood,
|
||||
// ImageUrl: params.imageUrl,
|
||||
// },
|
||||
data: {
|
||||
QuestionId: params.questionId,
|
||||
Name: params.name,
|
||||
Answer: params.answer,
|
||||
Type: params.type,
|
||||
IsGood: params.IsGood,
|
||||
ImageUrl: params.imageUrl,
|
||||
IsDisabled: params.IsDisabled,
|
||||
},
|
||||
data: params,
|
||||
})
|
||||
}
|
||||
|
||||
@ -87,33 +67,11 @@ export function fetchDisableQuestionLibrary(params: Api.Question.DisableQuestion
|
||||
}
|
||||
|
||||
/** 更新一条问题库 */
|
||||
export function fetchUpdateQuestionLibrary(params: Api.Question.AddQuestionLibraryParams, file?: File | null) {
|
||||
const formData = new FormData()
|
||||
if (file) {
|
||||
formData.append('Image', file)
|
||||
}
|
||||
export function fetchUpdateQuestionLibrary(params: Api.Question.UpdateQuestionLibraryParams) {
|
||||
return request<Api.Question.CommonRecord>({
|
||||
url: '/Base/ActivityMain/UpdateQuestionListDetail',
|
||||
method: 'post',
|
||||
// params: {
|
||||
// Id: params.id,
|
||||
// QuestionId: params.questionId,
|
||||
// Name: params.name,
|
||||
// Answer: params.answer,
|
||||
// Type: params.type,
|
||||
// IsGood: params.IsGood,
|
||||
// ImageUrl: params.imageUrl,
|
||||
// },
|
||||
data: {
|
||||
Id: params.id,
|
||||
QuestionId: params.questionId,
|
||||
Name: params.name,
|
||||
Answer: params.answer,
|
||||
Type: params.type,
|
||||
IsGood: params.IsGood,
|
||||
ImageUrl: params.imageUrl,
|
||||
IsDisabled: params.IsDisabled,
|
||||
},
|
||||
data: params,
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
2
apps/admin/src/typings/api/Competition.d.ts
vendored
@ -106,6 +106,8 @@ declare namespace Api {
|
||||
Image: string
|
||||
ImageUrl: string
|
||||
Answer: string
|
||||
KeyWordsIndex?: number
|
||||
KeyWord?: string
|
||||
}
|
||||
|
||||
/** get current question params */
|
||||
|
||||
12
apps/admin/src/typings/api/question.d.ts
vendored
@ -65,11 +65,21 @@ declare namespace Api {
|
||||
/** question library image url */
|
||||
imageUrl: string
|
||||
/** question library type */
|
||||
type: QuestionScoreType
|
||||
// type?: QuestionScoreType
|
||||
/** is priority 0: no 1: yes */
|
||||
IsGood: number
|
||||
/** is disabled */
|
||||
IsDisabled: boolean
|
||||
/** keyword */
|
||||
KeyWord: string
|
||||
/** keyword index */
|
||||
KeyWordsIndex: number
|
||||
}
|
||||
|
||||
/** update question library params */
|
||||
interface UpdateQuestionLibraryParams extends AddQuestionLibraryParams {
|
||||
/** question library id */
|
||||
id: number
|
||||
}
|
||||
|
||||
/** common search params of table */
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
<script setup lang="ts">
|
||||
import { NButton, NForm, NFormItem, NInputNumber, NModal, NSelect, type SelectOption } from 'naive-ui'
|
||||
import { onMounted, ref, watch } from 'vue'
|
||||
import { computed, onMounted, ref, watch } from 'vue'
|
||||
import { VueDraggable } from 'vue-draggable-plus'
|
||||
import { useDict } from '@/hooks/business/useDict'
|
||||
import { fetchGetQuestionListAll } from '@/service/api/question'
|
||||
@ -29,7 +29,10 @@ const props = defineProps<{
|
||||
|
||||
const { options: roundTypeOptions } = useDict('round_type')
|
||||
const { options: scoreTypeOptions } = useDict('score_type')
|
||||
const { options: timeOptions } = useDict('time_out')
|
||||
const { options: timeOptionsRaw } = useDict('time_out')
|
||||
const timeOptions = computed(() =>
|
||||
[...timeOptionsRaw.value].sort((a, b) => Number(a.value) - Number(b.value)),
|
||||
)
|
||||
// const { options: uiTypeOptions } = useDict('ui_type', 'string')
|
||||
const { options: uiTypeOptions } = useDict('question_category_name', 'string')
|
||||
|
||||
|
||||
@ -23,7 +23,6 @@ function handleAdd() {
|
||||
}
|
||||
|
||||
async function handleCopy(item: Api.Competition.CompetitionItem) {
|
||||
// TODO: 实现复制逻辑
|
||||
try {
|
||||
const { error } = await fetchCopyActivity(item.Id)
|
||||
if (error) {
|
||||
@ -163,7 +162,3 @@ onMounted(() => fetchActivityList())
|
||||
<CompetitionAddModal v-model:show="showAddModal" @success="fetchActivityList" />
|
||||
</NSpace>
|
||||
</template>
|
||||
|
||||
<style scoped>
|
||||
/* 针对不同屏幕微调间距 */
|
||||
</style>
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
<script setup lang="ts">
|
||||
import { ref } from 'vue'
|
||||
import { onMounted, ref } from 'vue'
|
||||
import CategoryTree from './modules/CategoryTree.vue'
|
||||
import QuestionList from './modules/QuestionList.vue'
|
||||
|
||||
@ -8,7 +8,8 @@ defineOptions({ name: 'QuestionStore' })
|
||||
const currentCategory = ref<any>(null)
|
||||
|
||||
// Resize logic
|
||||
const siderWidth = ref(450)
|
||||
const siderWidth = ref(525)
|
||||
const LOCAL_STORAGE_KEY = 'question-store-sider-width'
|
||||
const minWidth = 300
|
||||
const maxWidth = 800
|
||||
const isDragging = ref(false)
|
||||
@ -43,7 +44,15 @@ function onMouseUp() {
|
||||
document.removeEventListener('mouseup', onMouseUp)
|
||||
document.body.style.userSelect = ''
|
||||
document.body.style.cursor = ''
|
||||
localStorage.setItem(LOCAL_STORAGE_KEY, siderWidth.value.toString())
|
||||
}
|
||||
|
||||
onMounted(() => {
|
||||
const savedWidth = localStorage.getItem(LOCAL_STORAGE_KEY)
|
||||
if (savedWidth) {
|
||||
siderWidth.value = Number(savedWidth)
|
||||
}
|
||||
})
|
||||
</script>
|
||||
|
||||
<template>
|
||||
|
||||
@ -6,6 +6,7 @@ import {
|
||||
NInput,
|
||||
NModal,
|
||||
NSelect,
|
||||
type SelectOption,
|
||||
useDialog,
|
||||
useMessage,
|
||||
} from 'naive-ui'
|
||||
@ -20,9 +21,10 @@ const emit = defineEmits<{
|
||||
(e: 'dragStart', event: MouseEvent): void
|
||||
}>()
|
||||
|
||||
const { options: questionTypeOptions } = useDict('question_type', 'string')
|
||||
const { options: categoryOptions } = useDict('question_category_name', 'string')
|
||||
|
||||
const LOCAL_STORAGE_KEY = 'question-store-selected-category-id'
|
||||
|
||||
const message = useMessage()
|
||||
const dialog = useDialog()
|
||||
|
||||
@ -46,6 +48,7 @@ const currentOperationNode = ref<CategoryItem | null>(null)
|
||||
watch(selectedKey, (newKey) => {
|
||||
if (!newKey) {
|
||||
emit('update:category', null)
|
||||
localStorage.removeItem(LOCAL_STORAGE_KEY)
|
||||
return
|
||||
}
|
||||
const node = categoryList.value.find(item => item.Id === newKey)
|
||||
@ -53,9 +56,11 @@ watch(selectedKey, (newKey) => {
|
||||
emit('update:category', {
|
||||
...node,
|
||||
})
|
||||
localStorage.setItem(LOCAL_STORAGE_KEY, newKey.toString())
|
||||
}
|
||||
else {
|
||||
emit('update:category', null)
|
||||
localStorage.removeItem(LOCAL_STORAGE_KEY)
|
||||
}
|
||||
})
|
||||
|
||||
@ -63,6 +68,16 @@ function handleSelect(key: number) {
|
||||
selectedKey.value = key
|
||||
}
|
||||
|
||||
/**
|
||||
* 分类名称选择更新
|
||||
* @param _value
|
||||
* @param option
|
||||
*/
|
||||
function handleCategoryNameChange(_value: string, option: SelectOption) {
|
||||
if (option)
|
||||
categoryForm.value.questionType = option.value as QuestionType
|
||||
}
|
||||
|
||||
function handleAddCategory() {
|
||||
categoryOperation.value = 'add'
|
||||
categoryForm.value.questionContent = ''
|
||||
@ -100,7 +115,7 @@ function handleDeleteCategory(item: CategoryItem) {
|
||||
selectedKey.value = null
|
||||
}
|
||||
// 获取最新分类列表
|
||||
await fetchCategoryList()
|
||||
await loadAndSelectCategory()
|
||||
message.success('删除成功')
|
||||
}
|
||||
},
|
||||
@ -128,7 +143,7 @@ async function submitCategory() {
|
||||
message.error('添加分类失败')
|
||||
return
|
||||
}
|
||||
await fetchCategoryList()
|
||||
await loadAndSelectCategory()
|
||||
message.success('分类添加成功')
|
||||
}
|
||||
else if (categoryOperation.value === 'edit' && currentOperationNode.value) {
|
||||
@ -144,7 +159,7 @@ async function submitCategory() {
|
||||
}
|
||||
currentOperationNode.value.QuestionContent = categoryForm.value.questionContent
|
||||
message.success('分类修改成功')
|
||||
await fetchCategoryList()
|
||||
await loadAndSelectCategory()
|
||||
// 更新选中分类的信息
|
||||
if (selectedKey.value === currentOperationNode.value.Id) {
|
||||
const node = currentOperationNode.value
|
||||
@ -160,21 +175,35 @@ async function submitCategory() {
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取分类列表
|
||||
* 获取并选择分类列表
|
||||
*/
|
||||
async function fetchCategoryList() {
|
||||
async function loadAndSelectCategory() {
|
||||
try {
|
||||
const { data } = await fetchGetQuestionListAll()
|
||||
categoryList.value = data?.data || []
|
||||
// Ensure Id is always a number to prevent type mismatch issues
|
||||
categoryList.value = (data?.data || []).map((c: any) => ({ ...c, Id: Number(c.Id) }))
|
||||
|
||||
const savedKeyRaw = localStorage.getItem(LOCAL_STORAGE_KEY)
|
||||
const savedKey = savedKeyRaw ? Number(savedKeyRaw) : null
|
||||
const savedCategoryExists = savedKey ? categoryList.value.some(c => c.Id === savedKey) : false
|
||||
|
||||
if (savedKey && savedCategoryExists) {
|
||||
selectedKey.value = savedKey
|
||||
}
|
||||
else if (categoryList.value.length > 0) {
|
||||
selectedKey.value = categoryList.value[0].Id
|
||||
}
|
||||
else {
|
||||
selectedKey.value = null
|
||||
}
|
||||
}
|
||||
// eslint-disable-next-line unused-imports/no-unused-vars
|
||||
catch (error) {
|
||||
message.error('获取分类列表失败')
|
||||
catch (error: any) {
|
||||
message.error(error.message || '获取分类列表失败')
|
||||
}
|
||||
}
|
||||
|
||||
onMounted(() => {
|
||||
fetchCategoryList()
|
||||
loadAndSelectCategory()
|
||||
})
|
||||
</script>
|
||||
|
||||
@ -243,11 +272,12 @@ onMounted(() => {
|
||||
:options="categoryOptions"
|
||||
value-field="label"
|
||||
placeholder="请选择分类名称"
|
||||
@update:value="handleCategoryNameChange"
|
||||
/>
|
||||
</NFormItem>
|
||||
<!-- 题目类型 -->
|
||||
<NFormItem label="题目类型">
|
||||
<NSelect v-model:value="categoryForm.questionType" :options="questionTypeOptions" placeholder="请选择题目类型" />
|
||||
<NInput v-model:value="categoryForm.questionType" placeholder="请选择分类名称自动带出" :readonly="true" />
|
||||
</NFormItem>
|
||||
<!-- 分类描述 -->
|
||||
<NFormItem label="分类描述">
|
||||
|
||||
282
apps/admin/src/views/question-store/modules/QuestionDrawer.vue
Normal file
@ -0,0 +1,282 @@
|
||||
<script setup lang="ts">
|
||||
import type { FormInst, FormItemRule } from 'naive-ui'
|
||||
import Clipboard from 'clipboard'
|
||||
import {
|
||||
NButton,
|
||||
NCard,
|
||||
NDrawer,
|
||||
NDrawerContent,
|
||||
NForm,
|
||||
NFormItem,
|
||||
NInput,
|
||||
NInputNumber,
|
||||
NRadio,
|
||||
NRadioGroup,
|
||||
} from 'naive-ui'
|
||||
import { pinyin } from 'pinyin-pro'
|
||||
import { computed, onUnmounted, ref, watch } from 'vue'
|
||||
import OssImageUpload from '@/components/common/oss-image-upload/index.vue'
|
||||
import WangEditor from '@/components/common/wang-editor.vue'
|
||||
import { QuestionCategoryEnum, QuestionType } from '@/enum/business'
|
||||
import { fetchAddQuestionLibrary, fetchUpdateQuestionLibrary } from '@/service/api/question'
|
||||
|
||||
const props = defineProps<{
|
||||
show: boolean
|
||||
operation: 'add' | 'edit'
|
||||
questionData?: any
|
||||
currentCategory: any
|
||||
}>()
|
||||
|
||||
const emit = defineEmits<{
|
||||
(e: 'update:show', value: boolean): void
|
||||
(e: 'success'): void
|
||||
}>()
|
||||
|
||||
const showQuestionModal = computed({
|
||||
get: () => props.show,
|
||||
set: val => emit('update:show', val),
|
||||
})
|
||||
|
||||
// 拼音转换工具
|
||||
const pinyinTool = ref({
|
||||
input: '',
|
||||
output: '',
|
||||
})
|
||||
|
||||
// 监听输入变化自动转换
|
||||
watch(() => pinyinTool.value.input, (val) => {
|
||||
if (val) {
|
||||
pinyinTool.value.output = pinyin(val)
|
||||
}
|
||||
else {
|
||||
pinyinTool.value.output = ''
|
||||
}
|
||||
})
|
||||
|
||||
// 复制拼音
|
||||
const copyBtnRef = ref<any>(null)
|
||||
let clipboard: Clipboard | null = null
|
||||
|
||||
watch(copyBtnRef, (inst) => {
|
||||
if (clipboard) {
|
||||
clipboard.destroy()
|
||||
clipboard = null
|
||||
}
|
||||
if (inst) {
|
||||
const domEl = inst.$el || inst
|
||||
clipboard = new Clipboard(domEl)
|
||||
clipboard.on('success', () => {
|
||||
window?.$message?.success('拼音已复制到剪贴板')
|
||||
})
|
||||
clipboard.on('error', () => {
|
||||
window?.$message?.error('复制失败,请手动复制')
|
||||
})
|
||||
}
|
||||
})
|
||||
|
||||
onUnmounted(() => {
|
||||
clipboard?.destroy()
|
||||
})
|
||||
|
||||
const questionForm = ref({
|
||||
name: '',
|
||||
answer: '',
|
||||
type: QuestionCategoryEnum.ChineseCharacterDictation1 as QuestionCategoryEnum | number,
|
||||
imageUrl: '',
|
||||
IsGood: 0,
|
||||
IsDisabled: false,
|
||||
KeyWord: '',
|
||||
KeyWordsIndex: 0,
|
||||
})
|
||||
|
||||
const questionFormRef = ref<FormInst | null>(null)
|
||||
|
||||
const rules = computed(() => {
|
||||
const dynamicRules: any = {
|
||||
answer: [{ required: true, message: '请输入题目答案', trigger: ['blur'] }],
|
||||
type: [{ required: true, message: '请选择题目类型', trigger: ['change'] }],
|
||||
}
|
||||
|
||||
// 题目正文内容和图片至少要有一个
|
||||
if (!questionForm.value.imageUrl) {
|
||||
dynamicRules.name = [{ required: true, message: '请输入题目正文内容或上传图片', trigger: ['blur'] }]
|
||||
}
|
||||
|
||||
// 只有“联想对对碰”类型才需要关键词
|
||||
if (questionForm.value.type === QuestionCategoryEnum.AssociationMatching) {
|
||||
dynamicRules.KeyWord = [{ required: true, message: '请输入关键词', trigger: ['blur'] }]
|
||||
dynamicRules.KeyWordsIndex = [
|
||||
{
|
||||
required: true,
|
||||
validator: (_rule: FormItemRule, value: number) => {
|
||||
return typeof value === 'number'
|
||||
},
|
||||
message: '请输入关键词索引',
|
||||
trigger: ['blur', 'change'],
|
||||
},
|
||||
]
|
||||
}
|
||||
|
||||
return dynamicRules
|
||||
})
|
||||
|
||||
watch(() => props.show, (val) => {
|
||||
if (val) {
|
||||
if (props.operation === 'add') {
|
||||
questionForm.value = {
|
||||
name: '',
|
||||
answer: '',
|
||||
type: props.currentCategory?.QuestionType || QuestionType.SingleChoice,
|
||||
imageUrl: '',
|
||||
IsGood: 0,
|
||||
IsDisabled: false,
|
||||
KeyWord: '',
|
||||
KeyWordsIndex: 0,
|
||||
}
|
||||
pinyinTool.value.input = ''
|
||||
pinyinTool.value.output = ''
|
||||
}
|
||||
else if (props.operation === 'edit' && props.questionData) {
|
||||
const question = props.questionData
|
||||
questionForm.value = {
|
||||
name: question.Name,
|
||||
answer: question.Answer,
|
||||
type: Number(question.Type),
|
||||
KeyWord: question.KeyWord || '',
|
||||
KeyWordsIndex: question.KeyWordsIndex || 0,
|
||||
imageUrl: question.ImageUrl || '',
|
||||
IsGood: question.IsPriority || 0,
|
||||
IsDisabled: !!question.IsDisabled,
|
||||
}
|
||||
pinyinTool.value.input = ''
|
||||
pinyinTool.value.output = ''
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
async function submitQuestion() {
|
||||
const valid = await questionFormRef.value?.validate()
|
||||
|
||||
if (!valid) {
|
||||
window?.$message?.error('请填写完整信息')
|
||||
return
|
||||
}
|
||||
|
||||
const params = {
|
||||
...questionForm.value,
|
||||
questionId: props.currentCategory.Id,
|
||||
// type: String(questionForm.value.type) as Api.Question.QuestionScoreType,
|
||||
}
|
||||
|
||||
if (questionForm.value.type !== QuestionCategoryEnum.AssociationMatching) {
|
||||
params.KeyWord = ''
|
||||
params.KeyWordsIndex = 0
|
||||
}
|
||||
|
||||
if (props.operation === 'add') {
|
||||
const { error } = await fetchAddQuestionLibrary({ ...params, id: 0 })
|
||||
if (!error) {
|
||||
window?.$message?.success('题目添加成功')
|
||||
emit('success')
|
||||
}
|
||||
else {
|
||||
window?.$message?.error('添加失败')
|
||||
}
|
||||
}
|
||||
else if (props.operation === 'edit' && props.questionData) {
|
||||
const { error } = await fetchUpdateQuestionLibrary({ ...params, id: props.questionData.Id })
|
||||
if (!error) {
|
||||
window?.$message?.success('题目修改成功')
|
||||
emit('success')
|
||||
}
|
||||
else {
|
||||
window?.$message?.error('修改失败')
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<NDrawer v-model:show="showQuestionModal" :width="800">
|
||||
<NDrawerContent :title="props.operation === 'edit' ? '编辑题目详情' : '新增题目详情'">
|
||||
<div class="mb-4">
|
||||
<NCard size="small" title="🛠️ 拼音助手 (输入汉字获取带音标拼音)" class="bg-gray-50/50">
|
||||
<div class="flex gap-2">
|
||||
<NInput v-model:value="pinyinTool.input" placeholder="输入汉字..." class="flex-1" />
|
||||
<div class="flex flex-1 items-center justify-between border border-gray-200 rounded bg-white px-3 py-1">
|
||||
<span class="text-gray-600">{{ pinyinTool.output || '拼音结果将显示在这里' }}</span>
|
||||
<textarea id="pinyinCopyTarget" v-model="pinyinTool.output" class="absolute opacity-0 -z-1" />
|
||||
<div v-if="pinyinTool.output" ref="copyBtnRef" data-clipboard-target="#pinyinCopyTarget">
|
||||
<NButton size="tiny" type="primary" secondary>
|
||||
复制
|
||||
</NButton>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</NCard>
|
||||
</div>
|
||||
|
||||
<NForm ref="questionFormRef" label-placement="top" :rules="rules" :model="questionForm" size="small">
|
||||
<NFormItem label="题目正文内容" path="name">
|
||||
<div
|
||||
v-if="[QuestionCategoryEnum.PoetryComprehension, QuestionCategoryEnum.PoetryCommonKnowledge, QuestionCategoryEnum.ReversePoemMatching, QuestionCategoryEnum.ChineseCharacterDictation1].includes(props.currentCategory?.QuestionType)"
|
||||
class="w-full overflow-hidden border border-gray-200 rounded-lg"
|
||||
>
|
||||
<WangEditor
|
||||
v-model="questionForm.name" placeholder="请输入题目内容..." height="300px"
|
||||
:exclude-keys="['header1', 'fontSize', 'fontFamily', 'lineHeight', 'justifyLeft', 'justifyRight', 'justifyCenter', 'justifyJustify', 'group-image', 'group-video', 'insertTable', 'headerSelect']"
|
||||
/>
|
||||
</div>
|
||||
<NInput v-else v-model:value="questionForm.name" type="textarea" placeholder="请输入题目内容" :rows="3" />
|
||||
</NFormItem>
|
||||
|
||||
<NFormItem label="是否优先使用" path="IsGood">
|
||||
<NRadioGroup v-model:value="questionForm.IsGood">
|
||||
<NRadio :value="0">
|
||||
否
|
||||
</NRadio>
|
||||
<NRadio :value="1">
|
||||
是
|
||||
</NRadio>
|
||||
</NRadioGroup>
|
||||
</NFormItem>
|
||||
<NFormItem label="是否禁用" path="IsDisabled">
|
||||
<NRadioGroup v-model:value="questionForm.IsDisabled">
|
||||
<NRadio :value="false">
|
||||
否
|
||||
</NRadio>
|
||||
<NRadio :value="true">
|
||||
是
|
||||
</NRadio>
|
||||
</NRadioGroup>
|
||||
</NFormItem>
|
||||
<NFormItem label="上传图片">
|
||||
<OssImageUpload v-model="questionForm.imageUrl" />
|
||||
</NFormItem>
|
||||
<template v-if="currentCategory?.QuestionType === QuestionCategoryEnum.AssociationMatching">
|
||||
<NFormItem label="关键词" path="KeyWord">
|
||||
<NInput v-model:value="questionForm.KeyWord" placeholder="请输入关键词" />
|
||||
</NFormItem>
|
||||
|
||||
<NFormItem label="关键词索引" path="KeyWordsIndex">
|
||||
<NInputNumber v-model:value="questionForm.KeyWordsIndex" placeholder="请输入关键词索引" />
|
||||
</NFormItem>
|
||||
</template>
|
||||
|
||||
<NFormItem label="参考标准答案" path="answer">
|
||||
<NInput v-model:value="questionForm.answer" placeholder="正确答案" />
|
||||
</NFormItem>
|
||||
</NForm>
|
||||
<template #footer>
|
||||
<div class="flex justify-end gap-3">
|
||||
<NButton @click="showQuestionModal = false">
|
||||
取消并返回
|
||||
</NButton>
|
||||
<NButton type="primary" @click="submitQuestion">
|
||||
保存并入库
|
||||
</NButton>
|
||||
</div>
|
||||
</template>
|
||||
</NDrawerContent>
|
||||
</NDrawer>
|
||||
</template>
|
||||
@ -1,84 +1,25 @@
|
||||
<script setup lang="ts">
|
||||
import type { FormInst, UploadCustomRequestOptions, UploadFileInfo } from 'naive-ui'
|
||||
import Clipboard from 'clipboard'
|
||||
import {
|
||||
NBreadcrumb,
|
||||
NBreadcrumbItem,
|
||||
NButton,
|
||||
NCard,
|
||||
NCheckbox,
|
||||
NDrawer,
|
||||
NDrawerContent,
|
||||
NEmpty,
|
||||
NForm,
|
||||
NFormItem,
|
||||
NImage,
|
||||
NInput,
|
||||
NPagination,
|
||||
NRadio,
|
||||
NRadioGroup,
|
||||
NTag,
|
||||
NUpload,
|
||||
} from 'naive-ui'
|
||||
import { pinyin } from 'pinyin-pro'
|
||||
import { computed, onUnmounted, ref, watch } from 'vue'
|
||||
import WangEditor from '@/components/common/wang-editor.vue'
|
||||
import { computed, ref, watch } from 'vue'
|
||||
import SvgIcon from '@/components/custom/svg-icon.vue'
|
||||
import { QuestionCategoryEnum, QuestionType } from '@/enum/business'
|
||||
import { fetchAddQuestionLibrary, fetchDeleteQuestionLibrary, fetchDisableQuestionLibrary, fetchGetQuestionLibraryListAll, fetchUpdateQuestionLibrary } from '@/service/api/question'
|
||||
/**
|
||||
* 为了user端题目展示的效果以及布局可控,指定规则:
|
||||
* 1.普通类型 =》用存文字存 ['汉字加一加','词语听写','汉字听写','成语写一写']
|
||||
* 2.复杂样式 =》用富文本 ['诗词理解']
|
||||
*
|
||||
*/
|
||||
import { fetchDeleteQuestionLibrary, fetchDisableQuestionLibrary, fetchGetQuestionLibraryListAll } from '@/service/api/question'
|
||||
import QuestionDrawer from './QuestionDrawer.vue'
|
||||
|
||||
const props = defineProps<{
|
||||
currentCategory: any
|
||||
}>()
|
||||
|
||||
// 拼音转换工具
|
||||
const pinyinTool = ref({
|
||||
input: '',
|
||||
output: '',
|
||||
})
|
||||
|
||||
// 监听输入变化自动转换
|
||||
watch(() => pinyinTool.value.input, (val) => {
|
||||
if (val) {
|
||||
pinyinTool.value.output = pinyin(val)
|
||||
}
|
||||
else {
|
||||
pinyinTool.value.output = ''
|
||||
}
|
||||
})
|
||||
|
||||
// 复制拼音
|
||||
const copyBtnRef = ref<any>(null)
|
||||
let clipboard: Clipboard | null = null
|
||||
|
||||
watch(copyBtnRef, (inst) => {
|
||||
if (clipboard) {
|
||||
clipboard.destroy()
|
||||
clipboard = null
|
||||
}
|
||||
if (inst) {
|
||||
const domEl = inst.$el || inst
|
||||
clipboard = new Clipboard(domEl)
|
||||
clipboard.on('success', () => {
|
||||
window?.$message?.success('拼音已复制到剪贴板')
|
||||
})
|
||||
clipboard.on('error', () => {
|
||||
window?.$message?.error('复制失败,请手动复制')
|
||||
})
|
||||
}
|
||||
})
|
||||
|
||||
onUnmounted(() => {
|
||||
clipboard?.destroy()
|
||||
})
|
||||
|
||||
// 题目列表数据
|
||||
const questionList = ref<any[]>([])
|
||||
const loading = ref(false)
|
||||
|
||||
@ -106,19 +47,7 @@ const pagination = ref({
|
||||
const searchText = ref('')
|
||||
const showQuestionModal = ref(false)
|
||||
const questionOperation = ref<'add' | 'edit'>('add')
|
||||
const currentQuestionId = ref<number | null>(null)
|
||||
const questionForm = ref({
|
||||
name: '',
|
||||
answer: '',
|
||||
type: QuestionType.SingleChoice as QuestionType | number, // 题目类型
|
||||
imageUrl: '',
|
||||
IsGood: 0,
|
||||
IsDisabled: false,
|
||||
})
|
||||
|
||||
const fileList = ref<UploadFileInfo[]>([])
|
||||
|
||||
const questionFormRef = ref<FormInst | null>(null)
|
||||
const currentQuestion = ref<any>(null)
|
||||
|
||||
// 批量选择
|
||||
const selectedQuestionIds = ref<number[]>([])
|
||||
@ -203,12 +132,6 @@ async function handleBatchDisable(disabled: boolean) {
|
||||
}
|
||||
}
|
||||
|
||||
const rules = {
|
||||
name: [{ required: true, message: '请输入题目正文内容', trigger: ['blur'] }],
|
||||
answer: [{ required: true, message: '请输入题目答案', trigger: ['blur'] }],
|
||||
type: [{ required: true, message: '请选择题目类型', trigger: ['change'] }],
|
||||
}
|
||||
|
||||
const hasCategory = computed(() => {
|
||||
return !!props.currentCategory
|
||||
})
|
||||
@ -224,14 +147,6 @@ watch(() => props.currentCategory, (newVal) => {
|
||||
}
|
||||
}, { immediate: true })
|
||||
|
||||
function customRequest({ onFinish }: UploadCustomRequestOptions) {
|
||||
onFinish()
|
||||
}
|
||||
|
||||
function handleUploadChange(data: { fileList: UploadFileInfo[] }) {
|
||||
fileList.value = data.fileList
|
||||
}
|
||||
|
||||
async function fetchData(id: number) {
|
||||
loading.value = true
|
||||
const { data, error } = await fetchGetQuestionLibraryListAll({
|
||||
@ -260,49 +175,15 @@ function handleAddQuestion() {
|
||||
return
|
||||
}
|
||||
questionOperation.value = 'add'
|
||||
currentQuestionId.value = null
|
||||
questionForm.value = {
|
||||
name: '',
|
||||
answer: '',
|
||||
type: props.currentCategory?.QuestionType || QuestionType.SingleChoice,
|
||||
imageUrl: '',
|
||||
IsGood: 0,
|
||||
IsDisabled: false,
|
||||
}
|
||||
fileList.value = []
|
||||
currentQuestion.value = null
|
||||
showQuestionModal.value = true
|
||||
pinyinTool.value.input = ''
|
||||
pinyinTool.value.output = ''
|
||||
}
|
||||
|
||||
/**
|
||||
* 处理编辑题目
|
||||
* @param id 题目ID
|
||||
*/
|
||||
function handleEditQuestion(id: number) {
|
||||
pinyinTool.value.input = ''
|
||||
pinyinTool.value.output = ''
|
||||
const question = questionList.value.find(q => q.Id === id)
|
||||
if (question) {
|
||||
questionOperation.value = 'edit'
|
||||
currentQuestionId.value = id
|
||||
questionForm.value = {
|
||||
name: question.Name,
|
||||
answer: question.Answer,
|
||||
type: question.Type,
|
||||
imageUrl: question.ImageUrl || '',
|
||||
IsGood: question.IsPriority || 0,
|
||||
IsDisabled: !!question.IsDisabled,
|
||||
}
|
||||
fileList.value = []
|
||||
if (question.ImageUrl) {
|
||||
fileList.value = [{
|
||||
id: 'existing',
|
||||
name: 'Existing Image',
|
||||
status: 'finished',
|
||||
url: question.ImageUrl,
|
||||
}]
|
||||
}
|
||||
currentQuestion.value = question
|
||||
showQuestionModal.value = true
|
||||
}
|
||||
}
|
||||
@ -328,69 +209,10 @@ function handleDeleteQuestion(id: number) {
|
||||
})
|
||||
}
|
||||
|
||||
async function submitQuestion() {
|
||||
const valid = await questionFormRef.value?.validate()
|
||||
|
||||
if (!questionForm.value.name) {
|
||||
if (!valid) {
|
||||
window?.$message?.error('请填写完整信息')
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
const commonParams = {
|
||||
name: questionForm.value.name,
|
||||
answer: questionForm.value.answer,
|
||||
imageUrl: '',
|
||||
type: questionForm.value.type as any,
|
||||
questionId: props.currentCategory.Id,
|
||||
IsGood: questionForm.value.IsGood,
|
||||
// 传给后端为 boolean
|
||||
IsDisabled: questionForm.value.IsDisabled,
|
||||
}
|
||||
|
||||
let fileToUpload: File | null = null
|
||||
if (questionForm.value.type === QuestionType.Image) { // 图片类型
|
||||
if (fileList.value.length > 0 && fileList.value[0].file) {
|
||||
fileToUpload = fileList.value[0].file
|
||||
}
|
||||
// else if (questionOperation.value === 'add' && fileList.value.length === 0) {
|
||||
// window?.$message?.error('请上传图片')
|
||||
// return
|
||||
// }
|
||||
// else if (questionOperation.value === 'edit' && fileList.value.length === 0) {
|
||||
// window?.$message?.error('请上传图片')
|
||||
// return
|
||||
// }
|
||||
}
|
||||
|
||||
if (questionOperation.value === 'add') {
|
||||
const { error } = await fetchAddQuestionLibrary({
|
||||
...commonParams,
|
||||
id: 0,
|
||||
}, fileToUpload)
|
||||
if (!error) {
|
||||
window?.$message?.success('题目添加成功')
|
||||
showQuestionModal.value = false
|
||||
fetchData(props.currentCategory.Id)
|
||||
}
|
||||
else {
|
||||
window?.$message?.error('添加失败')
|
||||
}
|
||||
}
|
||||
else if (questionOperation.value === 'edit' && currentQuestionId.value) {
|
||||
const { error } = await fetchUpdateQuestionLibrary({
|
||||
...commonParams,
|
||||
id: currentQuestionId.value,
|
||||
}, fileToUpload)
|
||||
if (!error) {
|
||||
window?.$message?.success('题目修改成功')
|
||||
showQuestionModal.value = false
|
||||
fetchData(props.currentCategory.Id)
|
||||
}
|
||||
else {
|
||||
window?.$message?.error('修改失败')
|
||||
}
|
||||
function onDrawerSuccess() {
|
||||
showQuestionModal.value = false
|
||||
if (props.currentCategory?.Id) {
|
||||
fetchData(props.currentCategory.Id)
|
||||
}
|
||||
}
|
||||
</script>
|
||||
@ -556,102 +378,13 @@ async function submitQuestion() {
|
||||
</template>
|
||||
</div>
|
||||
|
||||
<!-- Add Question Drawer -->
|
||||
<NDrawer v-model:show="showQuestionModal" :width="800">
|
||||
<NDrawerContent :title="questionOperation === 'edit' ? '编辑题目详情' : '新增题目详情'">
|
||||
<div class="mb-4">
|
||||
<NCard size="small" title="🛠️ 拼音助手 (输入汉字获取带音标拼音)" class="bg-gray-50/50">
|
||||
<div class="flex gap-2">
|
||||
<NInput v-model:value="pinyinTool.input" placeholder="输入汉字..." class="flex-1" />
|
||||
<div class="flex flex-1 items-center justify-between border border-gray-200 rounded bg-white px-3 py-1">
|
||||
<span class="text-gray-600">{{ pinyinTool.output || '拼音结果将显示在这里' }}</span>
|
||||
<textarea id="pinyinCopyTarget" v-model="pinyinTool.output" class="absolute opacity-0 -z-1" />
|
||||
<div v-if="pinyinTool.output" ref="copyBtnRef" data-clipboard-target="#pinyinCopyTarget">
|
||||
<NButton size="tiny" type="primary" secondary>
|
||||
复制
|
||||
</NButton>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</NCard>
|
||||
</div>
|
||||
|
||||
<NForm ref="questionFormRef" label-placement="top" :rules="rules" :model="questionForm" size="small">
|
||||
<NFormItem label="题目正文内容" path="name">
|
||||
<div
|
||||
v-if="[QuestionCategoryEnum.PoetryComprehension].includes(props.currentCategory?.QuestionType)"
|
||||
class="w-full overflow-hidden border border-gray-200 rounded-lg"
|
||||
>
|
||||
<WangEditor
|
||||
v-model="questionForm.name" placeholder="请输入题目内容..." height="300px"
|
||||
:exclude-keys="['header1', 'fontSize', 'fontFamily', 'lineHeight', 'justifyLeft', 'justifyRight', 'justifyCenter', 'justifyJustify', 'group-image', 'group-video', 'insertTable', 'headerSelect']"
|
||||
/>
|
||||
</div>
|
||||
<NInput v-else v-model:value="questionForm.name" type="textarea" placeholder="请输入题目内容" :rows="3" />
|
||||
</NFormItem>
|
||||
|
||||
<!-- <div class="grid grid-cols-2 gap-4">
|
||||
<NFormItem label="参考分值 (Pts)">
|
||||
<NInputNumber v-model:value="questionForm.score" class="w-full" :min="1" />
|
||||
</NFormItem>
|
||||
<NFormItem label="限时 (S)">
|
||||
<NInputNumber v-model:value="questionForm.time" class="w-full" :min="1" />
|
||||
</NFormItem>
|
||||
</div> -->
|
||||
|
||||
<!-- 类型 -->
|
||||
<!-- <NFormItem label="类型" path="type">
|
||||
<NSelect v-model:value="questionForm.type" class="w-full" :options="questionTypeOptionsDict" />
|
||||
</NFormItem> -->
|
||||
|
||||
<!-- 是否优先使用 -->
|
||||
<NFormItem label="是否优先使用" path="IsGood">
|
||||
<NRadioGroup v-model:value="questionForm.IsGood">
|
||||
<NRadio :value="0">
|
||||
否
|
||||
</NRadio>
|
||||
<NRadio :value="1">
|
||||
是
|
||||
</NRadio>
|
||||
</NRadioGroup>
|
||||
</NFormItem>
|
||||
<!-- 是否禁用 -->
|
||||
<NFormItem label="是否禁用" path="IsDisabled">
|
||||
<NRadioGroup v-model:value="questionForm.IsDisabled">
|
||||
<NRadio :value="false">
|
||||
否
|
||||
</NRadio>
|
||||
<NRadio :value="true">
|
||||
是
|
||||
</NRadio>
|
||||
</NRadioGroup>
|
||||
</NFormItem>
|
||||
<!-- 上传图片 -->
|
||||
<NFormItem v-if="questionForm.type === QuestionType.Image" label="上传图片">
|
||||
<NUpload
|
||||
v-model:file-list="fileList" accept="image/*" :max="1" list-type="image-card"
|
||||
:custom-request="customRequest" @change="handleUploadChange"
|
||||
>
|
||||
点击上传
|
||||
</NUpload>
|
||||
</NFormItem>
|
||||
|
||||
<NFormItem label="参考标准答案" path="answer">
|
||||
<NInput v-model:value="questionForm.answer" placeholder="正确答案" />
|
||||
</NFormItem>
|
||||
</NForm>
|
||||
<template #footer>
|
||||
<div class="flex justify-end gap-3">
|
||||
<NButton @click="showQuestionModal = false">
|
||||
取消并返回
|
||||
</NButton>
|
||||
<NButton type="primary" @click="submitQuestion">
|
||||
保存并入库
|
||||
</NButton>
|
||||
</div>
|
||||
</template>
|
||||
</NDrawerContent>
|
||||
</NDrawer>
|
||||
<QuestionDrawer
|
||||
v-model:show="showQuestionModal"
|
||||
:operation="questionOperation"
|
||||
:question-data="currentQuestion"
|
||||
:current-category="currentCategory"
|
||||
@success="onDrawerSuccess"
|
||||
/>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
|
||||
@ -151,7 +151,7 @@ function edit(item: any) {
|
||||
<template #header>
|
||||
<div class="flex items-center justify-between">
|
||||
<div class="mid-title">
|
||||
<div class="text-16px font-bold">
|
||||
<div class="text-2xl font-bold">
|
||||
{{ rankTitle }}
|
||||
</div>
|
||||
<div class="mt-4px text-12px text-gray-500">
|
||||
|
||||
@ -241,9 +241,9 @@ async function fetchQuestions() {
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取当前正在比赛的题目
|
||||
* 获取当前正在比赛的题目(不触发同步选中逻辑)
|
||||
*/
|
||||
async function fetchCurrentQuestion() {
|
||||
async function fetchCurrentQuestion(shouldSync = true) {
|
||||
if (!roomId.value)
|
||||
return
|
||||
try {
|
||||
@ -254,8 +254,10 @@ async function fetchCurrentQuestion() {
|
||||
}
|
||||
currentQuestion.value = data?.data || {}
|
||||
console.warn('current question', currentQuestion.value)
|
||||
// 拉取当前题目信息后尝试同步选中题
|
||||
syncCurrentQuestionSelection()
|
||||
// 只在初始化时同步选中题,轮询时不同步
|
||||
if (shouldSync) {
|
||||
syncCurrentQuestionSelection()
|
||||
}
|
||||
}
|
||||
catch (error: any) {
|
||||
message.error(error.message || '获取当前题目失败')
|
||||
@ -467,8 +469,8 @@ async function handleNexCurrentQuestion() {
|
||||
|
||||
function handlePublish() {
|
||||
const endTimeStr = (currentQuestion.value as any)?.EndTime
|
||||
if (endTimeStr && Date.now() < new Date(endTimeStr).getTime()) {
|
||||
window.$message?.warning('倒计时未结束,暂不能发布')
|
||||
if (endTimeStr && Date.now() < new Date(endTimeStr).getTime() + 5000) {
|
||||
window.$message?.warning('倒计时未结束(需等待5秒延迟),暂不能发布')
|
||||
return
|
||||
}
|
||||
if (currentQuestion.value?.TeamGroupQuestionID) {
|
||||
@ -583,7 +585,8 @@ const canPublish = computed(() => {
|
||||
const endTime = (currentQuestion.value as any)?.EndTime
|
||||
if (!endTime)
|
||||
return true
|
||||
const end = new Date(endTime).getTime()
|
||||
// 结束时间 + 5秒延迟才能发布
|
||||
const end = new Date(endTime).getTime() + 5000
|
||||
return nowTs.value >= end
|
||||
})
|
||||
|
||||
@ -593,7 +596,7 @@ function startPolling() {
|
||||
// 检查是否已经结束
|
||||
const endTime = (currentQuestion.value as any)?.EndTime
|
||||
if (endTime) {
|
||||
// 增加 8s 缓冲时间
|
||||
// 增加 12s 缓冲时间
|
||||
const end = new Date(endTime).getTime() + 12000
|
||||
const now = new Date().getTime()
|
||||
if (now > end) {
|
||||
@ -616,7 +619,7 @@ function startPolling() {
|
||||
// 每次轮询前再次检查是否过期
|
||||
const currentEndTime = (currentQuestion.value as any)?.EndTime
|
||||
if (currentEndTime) {
|
||||
// 增加 8s 缓冲时间
|
||||
// 增加 12s 缓冲时间
|
||||
const endTs = new Date(currentEndTime).getTime() + 12000
|
||||
if (Date.now() > endTs) {
|
||||
console.log('题目时间已到(含12s缓冲),停止轮询', currentEndTime)
|
||||
@ -625,6 +628,9 @@ function startPolling() {
|
||||
}
|
||||
}
|
||||
nowTs.value = Date.now()
|
||||
|
||||
// 轮询时同时更新当前题目信息(获取最新的 EndTime),但不触发同步
|
||||
fetchCurrentQuestion(false)
|
||||
fetchAnswerData()
|
||||
}, 3000)
|
||||
}
|
||||
@ -681,7 +687,7 @@ watch(() => currentQuestionDetailID.value, (newVal) => {
|
||||
|
||||
onMounted(async () => {
|
||||
// 并行拉取分组、题目与当前题目,完成后做一次同步
|
||||
await Promise.all([fetchGroups(), fetchQuestions(), fetchCurrentQuestion()])
|
||||
await Promise.all([fetchGroups(), fetchQuestions(), fetchCurrentQuestion(true)])
|
||||
syncCurrentQuestionSelection()
|
||||
startPolling()
|
||||
})
|
||||
|
||||
@ -196,7 +196,8 @@ onMounted(async () => {
|
||||
<template>
|
||||
<CompetitionLayout
|
||||
:show-back="true" :show-next="showNextButton" next-btn-text="下一步" :title="activityName"
|
||||
:title-bg-type="2" @back="handleBack" @next="handleNext"
|
||||
:title-bg-type="2" back-btn-text="返回" @back="handleBack"
|
||||
@next="handleNext"
|
||||
>
|
||||
<div class="h-screen w-full overflow-y-auto font-sans">
|
||||
<div class="relative z-10 min-h-full w-full">
|
||||
@ -344,7 +345,7 @@ onMounted(async () => {
|
||||
.card-back-design {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background: url('@/assets/imgs/user/cover-back.svg') no-repeat center center; // 背景面
|
||||
background: url('@/assets/imgs/user/cover-back.webp') no-repeat center center; // 背景面
|
||||
background-size: contain; // 保持比例
|
||||
border-radius: 20px;
|
||||
display: flex;
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
<script setup lang="ts">
|
||||
import { computed, onMounted, ref } from 'vue'
|
||||
import { useRoute } from 'vue-router'
|
||||
import drawImg from '@/assets/imgs/user/draw.svg'
|
||||
import drawImg from '@/assets/imgs/user/draw.webp'
|
||||
import CompetitionLayout from '@/components/custom/user/CompetitionLayout.vue'
|
||||
import { useRouterPush } from '@/hooks/common/router'
|
||||
import { fetchGetCurrentQuestion } from '@/service/api/game'
|
||||
@ -132,16 +132,19 @@ function handleBack() {
|
||||
|
||||
const questionMainTitle = computed(() => question.value?.QuestionList?.Name || '')
|
||||
const questionTitle = computed(() => question.value?.QuestionList?.QuestionContent || question.value?.QuestionList?.Name || '')
|
||||
|
||||
const titleBgTypeNum = computed(() => RoundType.value === 0 ? 3 : 4)
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<CompetitionLayout
|
||||
:show-back="true" :show-next="true" :title="questionMainTitle || '抽题'" next-btn-text="开始抽题"
|
||||
:show-back="true" :show-next="true" back-btn-text="返回" :title="questionMainTitle || '抽题'" next-btn-text="开始抽题"
|
||||
:title-bg-type="titleBgTypeNum || 3" title-text-color="#ffffff"
|
||||
@next="handleCardClick(question as Api.Competition.CurrentQuestionResponse)" @back="handleBack"
|
||||
>
|
||||
<div class="h-full w-full flex flex-col items-center pt-10 font-sans">
|
||||
<div v-if="question" class="mb-10 max-w-4xl text-center">
|
||||
<div class="text-2xl text-gray-800 font-medium leading-relaxed tracking-wide">
|
||||
<div class="text-4xl text-gray-800 font-medium leading-relaxed tracking-wide">
|
||||
{{ questionTitle || '' }}
|
||||
</div>
|
||||
</div>
|
||||
@ -169,7 +172,10 @@ const questionTitle = computed(() => question.value?.QuestionList?.QuestionConte
|
||||
}}</span>
|
||||
</div> -->
|
||||
<!-- 禁用放大 -->
|
||||
<NImage :src="drawImg" class="h-full w-full object-cover" :preview-disabled="true" />
|
||||
<NImage
|
||||
:src="drawImg" class="h-full w-full object-cover" width="300" height="300"
|
||||
:preview-disabled="true"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -20,6 +20,7 @@ const { activityId, groupId, activityInfo, teamId, teamIds } = storeToRefs(activ
|
||||
const currentQuestionInfo = computed(() => store.currentQuestionInfo)
|
||||
const currentQuestionDetail = computed(() => store.currentQuestionDetail)
|
||||
const currentQuestionMainInfo = computed(() => store.currentQuestionMainInfo)
|
||||
const RoundType = computed(() => store.currentQuestionMainInfo?.Activity_Question?.RoundType)
|
||||
|
||||
const loading = ref(false)
|
||||
|
||||
@ -228,7 +229,16 @@ async function fetchGetGameStatisticsData(_params: Api.Competition.QuestionAddPa
|
||||
correct: item.Points || 0, // 预估得分 (使用外层 Points)
|
||||
})
|
||||
})
|
||||
chartData.value = Array.from(teamMap.values())
|
||||
|
||||
const newChartData = Array.from(teamMap.values())
|
||||
|
||||
// 只有数据真正变化时才更新
|
||||
const currentDataStr = JSON.stringify(chartData.value)
|
||||
const newDataStr = JSON.stringify(newChartData)
|
||||
|
||||
if (currentDataStr !== newDataStr) {
|
||||
chartData.value = newChartData
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (error) {
|
||||
@ -237,13 +247,16 @@ async function fetchGetGameStatisticsData(_params: Api.Competition.QuestionAddPa
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const titleBgTypeNum = computed(() => RoundType.value === 0 ? 3 : 4) || 3
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<CompetitionLayout
|
||||
action-position="top" :show-back="false" :show-next="true" :title="mainTitle || ''"
|
||||
back-btn-text="返回" :next-btn-text="isStarted ? formattedTime : '开始答题'" :next-disabled="isStarted" btn-theme="light"
|
||||
@back="handleBack" @next="handleNext"
|
||||
:title-bg-type="titleBgTypeNum" title-text-color="#ffffff" back-btn-text="返回"
|
||||
:next-btn-text="isStarted ? formattedTime : '开始答题'" :next-disabled="isStarted" btn-theme="light" @back="handleBack"
|
||||
@next="handleNext"
|
||||
>
|
||||
<div class="relative h-full w-full flex flex-col items-center overflow-hidden px-12 font-sans">
|
||||
<!-- 题目说明 -->
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
<script setup lang="ts">
|
||||
import * as echarts from 'echarts/core'
|
||||
import { watch } from 'vue'
|
||||
import { ref, watch } from 'vue'
|
||||
|
||||
import { type ECOption, useEcharts } from '@/hooks/common/echarts'
|
||||
|
||||
@ -15,6 +15,21 @@ const props = defineProps<{
|
||||
height?: number
|
||||
}>()
|
||||
|
||||
// 缓存上一次的数据,用于深度比较
|
||||
const lastDataCache = ref<string>('')
|
||||
|
||||
/**
|
||||
* 深度比较数据是否发生变化
|
||||
*/
|
||||
function isDataChanged(newData: BarDatum[]): boolean {
|
||||
const newDataStr = JSON.stringify(newData)
|
||||
if (newDataStr === lastDataCache.value) {
|
||||
return false
|
||||
}
|
||||
lastDataCache.value = newDataStr
|
||||
return true
|
||||
}
|
||||
|
||||
/**
|
||||
* 构建柱状图配置
|
||||
* 说明:根据传入的数据生成双系列柱状图(答题数量/正确数量)
|
||||
@ -25,6 +40,8 @@ function buildOption(list: BarDatum[]): ECOption {
|
||||
const correct = list.map(i => i.correct)
|
||||
|
||||
return {
|
||||
// 禁用动画,避免频繁刷新时的抖动
|
||||
animation: false,
|
||||
tooltip: {
|
||||
trigger: 'axis',
|
||||
axisPointer: { type: 'shadow' },
|
||||
@ -113,12 +130,15 @@ const { domRef, updateOptions } = useEcharts<ECOption>(() => buildOption(props.d
|
||||
|
||||
/**
|
||||
* 监听数据变化并更新图表
|
||||
* 说明:当父组件 chartData 更新时,动态刷新柱状图
|
||||
* 说明:只有当数据真正发生变化时才更新图表,避免不必要的重绘
|
||||
*/
|
||||
watch(
|
||||
() => props.data,
|
||||
(val) => {
|
||||
updateOptions(() => buildOption(val || []))
|
||||
(newData) => {
|
||||
// 只有数据真正变化时才更新
|
||||
if (isDataChanged(newData || [])) {
|
||||
updateOptions(() => buildOption(newData || []))
|
||||
}
|
||||
},
|
||||
{ deep: true },
|
||||
)
|
||||
|
||||
@ -3,7 +3,7 @@ import { computed, onMounted, ref } from 'vue'
|
||||
import { useRoute } from 'vue-router'
|
||||
import groupType1 from '@/assets/imgs/user/group-type-1.svg'
|
||||
import groupType2 from '@/assets/imgs/user/group-type-2.svg'
|
||||
import startIcon from '@/assets/imgs/user/star-icon.svg'
|
||||
import startIcon from '@/assets/imgs/user/star-icon.webp'
|
||||
import CompetitionLayout from '@/components/custom/user/CompetitionLayout.vue'
|
||||
import { useRouterPush } from '@/hooks/common/router'
|
||||
import { fetchGetGroupListByActivityID } from '@/service/api/game'
|
||||
@ -83,7 +83,7 @@ onMounted(() => {
|
||||
|
||||
<template>
|
||||
<CompetitionLayout
|
||||
:show-back="true" :show-next="isAllEnd" next-btn-text="查看常规赛结果" next-btn-text2="查看加时赛结果"
|
||||
:show-back="true" back-btn-text="返回" :show-next="isAllEnd" next-btn-text="查看常规赛结果" font-size="22" next-btn-text2="查看加时赛结果"
|
||||
:show-next-btn2="hasExtraTime && isAllEnd" :title-bg-type="2" title="展示组别" @back="handleBack" @next="handleNext"
|
||||
@next2="handleNext2"
|
||||
>
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
<script lang="ts" setup>
|
||||
import { NCarousel, NImage } from 'naive-ui'
|
||||
import { computed, onMounted, ref } from 'vue'
|
||||
import beacon from '@/assets/imgs/user/event-card-bg-icon.svg'
|
||||
import beacon from '@/assets/imgs/user/event-card-bg-icon.webp'
|
||||
import CompetitionLayout from '@/components/custom/user/CompetitionLayout.vue'
|
||||
import { PublishStatus } from '@/enum/business'
|
||||
import { useRouterPush } from '@/hooks/common/router'
|
||||
@ -156,7 +156,7 @@ onMounted(() => {
|
||||
.event-card {
|
||||
width: 340px;
|
||||
height: 480px;
|
||||
background: url('@/assets/imgs/user/event-card-bg.svg') no-repeat center center;
|
||||
background: url('@/assets/imgs/user/event-card-bg.webp') no-repeat center center;
|
||||
background-size: 100% 100%;
|
||||
border-radius: 8px 8px 40px 40px;
|
||||
position: relative;
|
||||
|
||||
@ -1,77 +1,65 @@
|
||||
<script setup lang="ts">
|
||||
import { computed, watch } from 'vue'
|
||||
import TianZiGe from '@/components/custom/user/TianZiGe.vue'
|
||||
import { QuestionCategoryEnum } from '@/enum/business'
|
||||
import { useCompetitionStore } from '@/store/modules/competition'
|
||||
|
||||
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 ImageUrl = computed(() => currentQuestionDetail.value.ImageUrl)
|
||||
// 模版类型
|
||||
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 */
|
||||
const pinyinChars = computed(() => {
|
||||
// 汉字听写1:按 # 分割内容
|
||||
const dictationParts = computed(() => {
|
||||
if (content.value) {
|
||||
// 创建临时元素提取HTML文本内容
|
||||
const div = document.createElement('div')
|
||||
div.innerHTML = content.value
|
||||
const text = div.textContent || ''
|
||||
return text.trim().split(/\s+/).filter(Boolean)
|
||||
return content.value.split('#').filter(Boolean)
|
||||
}
|
||||
return []
|
||||
})
|
||||
|
||||
// 联想对对碰:上方词组
|
||||
const associationWords = computed(() => {
|
||||
const name = currentQuestionDetail.value?.Name || ''
|
||||
return name.split(/[,,、]/).filter(Boolean)
|
||||
})
|
||||
|
||||
// 联想对对碰:答案按逗号分行,只保留汉字
|
||||
const answerLines = computed(() => {
|
||||
const answer = currentQuestionDetail.value?.Answer || ''
|
||||
return answer.split(/[,,]/)
|
||||
.map(line => line.split('').filter(char => /[\u4E00-\u9FA5]/.test(char)))
|
||||
.filter(line => line.length > 0)
|
||||
})
|
||||
|
||||
// 联想对对碰:关键词索引和文字
|
||||
const keywordInfo = computed(() => ({
|
||||
index: currentQuestionDetail.value?.KeyWordsIndex ?? -1,
|
||||
word: currentQuestionDetail.value?.KeyWord || '',
|
||||
}))
|
||||
|
||||
// 计算全局字符索引(用于匹配 KeyWordsIndex)
|
||||
function getGlobalCharIndex(lineIndex: number, charIndex: number) {
|
||||
let globalIndex = 0
|
||||
for (let i = 0; i < lineIndex; i++) {
|
||||
globalIndex += answerLines.value[i].length
|
||||
}
|
||||
return globalIndex + charIndex
|
||||
}
|
||||
|
||||
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)
|
||||
console.log('Current currentQuestionDetail:', currentQuestionDetail.value)
|
||||
},
|
||||
{ deep: true, immediate: true },
|
||||
)
|
||||
@ -81,70 +69,138 @@ watch(
|
||||
<div class="w-full flex p-6">
|
||||
<!-- <p>template:{{ template }}</p> -->
|
||||
<!-- 模板A: 汉字听写1-提示 (拼音+提示) -->
|
||||
<div v-if="template === QuestionCategoryEnum.ChineseCharacterDictation1 || template === QuestionCategoryEnum.ChineseCharacterDictation2" class="text-center">
|
||||
<div v-if="template === QuestionCategoryEnum.ChineseCharacterDictation1" class="text-center">
|
||||
<div class="mb-6 inline-block text-5xl font-bold leading-none">
|
||||
<div class="ptions-container1 mb-2 text-center text-2xl">
|
||||
{{ title }}
|
||||
<div class="flex items-center justify-center gap-4">
|
||||
<div
|
||||
v-for="(part, index) in dictationParts" :key="`part-${index}`"
|
||||
class="text-4xl"
|
||||
:class="index === 0 ? 'short-content-bg' : 'content-with-bg'"
|
||||
>
|
||||
{{ part }}
|
||||
</div>
|
||||
</div>
|
||||
<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" /> -->
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 模板D: 汉字听写 2 词语听写 -->
|
||||
<div
|
||||
v-else-if="template === QuestionCategoryEnum.ChineseCharacterDictation2 || template === QuestionCategoryEnum.WordDictation"
|
||||
class="flex flex-col items-center"
|
||||
>
|
||||
<div class="mb-1 text-3xl text-gray-800 font-bold leading-relaxed">
|
||||
<div class="rich-content content-with-bg ml-3 mt-4 flex text-6xl !px-16 !py-10 !tracking-[0.1em]">
|
||||
{{ content }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 模板B: 汉字听写-同音字 (大字) -->
|
||||
<!-- 暂时未匹配到枚举,保持原样或删除 -->
|
||||
<!-- <div v-else-if="template === 'TEMPLATE_DICTATION_HOMOPHONE'" class="text-center"> -->
|
||||
|
||||
<!-- 模板C: 汉字加一加 (提示+部件) -->
|
||||
<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>
|
||||
<div class="mb-6 inline-block text-5xl font-bold leading-none">
|
||||
<div class="rich-content ml-3 mt-4 flex gap-1 text-5xl tracking-[0.1em]">
|
||||
请写出含有“ <span class="text-color-red !text-6xl">{{ content }}</span>”的汉字,书写时间为60秒。
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 模板D: 词语听写 (拼音+提示) -->
|
||||
<div v-else-if="template === QuestionCategoryEnum.WordDictation" class="flex flex-col items-center">
|
||||
<div class="mb-8 flex flex-wrap justify-center gap-6">
|
||||
<TianZiGe v-for="(char, index) in pinyinChars" :key="index" :char="char" />
|
||||
<!-- 模板D: 成语写一写1 (拼音+提示) -->
|
||||
<div v-else-if="template === QuestionCategoryEnum.IdiomWriting1" class="flex flex-col items-center">
|
||||
<div class="mb-1 text-gray-800 font-bold leading-relaxed">
|
||||
<div class="rich-content ml-3 mt-4 flex gap-1 text-4xl">
|
||||
{{ content }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 模板E: 成语-文字要求 -->
|
||||
<div v-else-if="template === QuestionCategoryEnum.IdiomWriting1 || template === QuestionCategoryEnum.IdiomWriting2" class="text-center">
|
||||
<div v-else-if="template === QuestionCategoryEnum.IdiomWriting2" class="text-center">
|
||||
<div class="mb-8 text-4xl text-gray-800 font-bold">
|
||||
<!-- {{ content }} -->
|
||||
<div class="rich-content" v-html="content" />
|
||||
<NImage :src="ImageUrl" preview-disabled width="300" object-fit="contain" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 模板G: 诗词理解-选择题 (通用选择题模板) -->
|
||||
<div v-else-if="template === QuestionCategoryEnum.PoetryComprehension" 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>
|
||||
|
||||
<!-- 模板ChangeWords: 换字组成语 -->
|
||||
<div v-else-if="template === QuestionCategoryEnum.ChangeWords" class="w-full flex flex-col items-center">
|
||||
<div class="content-with-bg mb-1 mt-10 p-6 text-6xl text-gray-800 font-bold !px-16 !py-8">
|
||||
{{ content }}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 模板: 场景猜诗句 -->
|
||||
<div v-else-if="template === QuestionCategoryEnum.SceneBasedPoemGuessing" class="w-full flex flex-col items-center">
|
||||
<div class="mb-1 p-16 text-3xl text-gray-800 font-bold leading-relaxed line-height-20">
|
||||
<div class="rich-content" v-html="content" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 模板: 联想对对碰 -->
|
||||
<div
|
||||
v-else-if="template === QuestionCategoryEnum.AssociationMatching"
|
||||
class="w-full flex flex-col items-center gap-8"
|
||||
>
|
||||
<!-- 上方:词组 -->
|
||||
<div class="flex flex-wrap justify-center gap-4">
|
||||
<div v-for="(word, index) in associationWords" :key="`word-${index}`" class="association-word text-bold">
|
||||
{{ word }}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 下方:答案字符(按逗号分行) -->
|
||||
<div class="flex flex-col items-center gap-3">
|
||||
<div v-for="(line, lineIndex) in answerLines" :key="`line-${lineIndex}`" class="flex gap-4">
|
||||
<div
|
||||
v-for="(char, charIndex) in line" :key="`char-${lineIndex}-${charIndex}`"
|
||||
class="association-char text-5xl"
|
||||
>
|
||||
<span v-if="getGlobalCharIndex(lineIndex, charIndex) === keywordInfo.index">
|
||||
{{ keywordInfo.word }}
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 模板: 字词飞花令 -->
|
||||
<div
|
||||
v-else-if="template === QuestionCategoryEnum.CharacterWordFlowerDrinkingGame"
|
||||
class="w-full flex flex-col items-center"
|
||||
>
|
||||
<div class="options-container text-5xl">
|
||||
请回答带有“{{ content }}”的诗词。
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 模板: 诗词常识 -->
|
||||
<div v-else-if="template === QuestionCategoryEnum.PoetryCommonKnowledge" class="w-full flex flex-col items-center">
|
||||
<div class="mb-1 p-16 text-3xl text-gray-800 font-bold leading-relaxed line-height-20">
|
||||
<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="mb-1 mt-20 text-5xl text-gray-800 font-bold leading-relaxed">
|
||||
<div class="rich-content" v-html="content" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div v-else class="text-red-500">
|
||||
<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">
|
||||
{{ content }}
|
||||
</div>
|
||||
</div>
|
||||
未知的题目模板: {{ template }}
|
||||
</div>
|
||||
</div>
|
||||
@ -348,5 +404,53 @@ watch(
|
||||
margin: 0 auto;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
:deep(p),
|
||||
:deep(span),
|
||||
:deep(div) {
|
||||
font-size: 2rem; /* text-5xl */
|
||||
}
|
||||
}
|
||||
|
||||
.content-with-bg {
|
||||
background: url('@/assets/imgs/user/content-bg.png') no-repeat center;
|
||||
background-size: 100% 100%;
|
||||
border-radius: 12px;
|
||||
padding: 20px 30px;
|
||||
letter-spacing: 0.4em;
|
||||
}
|
||||
|
||||
.short-content-bg {
|
||||
background: url('@/assets/imgs/user/short-content-bg.png') no-repeat center;
|
||||
background-size: 100% 100%;
|
||||
border-radius: 12px;
|
||||
padding: 20px 30px;
|
||||
letter-spacing: 0.1em;
|
||||
}
|
||||
|
||||
.association-word {
|
||||
background: url('@/assets/imgs/user/dui-kuang.png') no-repeat center;
|
||||
background-size: 100% 100%;
|
||||
min-width: 160px;
|
||||
height: 70px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
font-size: 32px;
|
||||
font-weight: bold;
|
||||
color: white;
|
||||
padding: 0 20px;
|
||||
}
|
||||
|
||||
.association-char {
|
||||
background: url('@/assets/imgs/user/dui-text-bg.png') no-repeat center;
|
||||
background-size: 100% 100%;
|
||||
width: 100px;
|
||||
height: 100px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
font-weight: bold;
|
||||
color: white;
|
||||
}
|
||||
</style>
|
||||
|
||||
@ -83,13 +83,13 @@ async function getUserRankList() {
|
||||
render(row: TeamData) {
|
||||
const rank = row.rank
|
||||
if (rank === 1) {
|
||||
return <NTag type="warning" size="large" round>🏆</NTag>
|
||||
return <NTag type="warning" size="large" class="!py-6 !text-3xl" round>🏆</NTag>
|
||||
}
|
||||
if (rank === 2) {
|
||||
return <NTag type="info" size="large" round>🥈</NTag>
|
||||
return <NTag type="info" size="large" class="!py-6 !text-3xl" round>🥈</NTag>
|
||||
}
|
||||
if (rank === 3) {
|
||||
return <NTag type="success" size="large" round>🥉</NTag>
|
||||
return <NTag type="success" size="large" class="!py-6 !text-3xl" round>🥉</NTag>
|
||||
}
|
||||
return <span>{rank}</span>
|
||||
},
|
||||
@ -140,14 +140,17 @@ function rowClassName(row: TeamData) {
|
||||
<div class="leaderboard-container">
|
||||
<div class="leaderboard-header">
|
||||
<NImage :src="title" alt="logo" preview-disabled class="mt--60px" object-fit="contain" />
|
||||
<p class="mt--20px text-center text-sm text-#6b778d">
|
||||
<p class="mt--20px text-center text-lg text-#6b778d">
|
||||
"勤学如春起之苗,不见其增,日有所长"
|
||||
</p>
|
||||
<ActionButton v-if="hasExtraTimeBtn" class="position-absolute bottom-20px right-20px" type="text" text="加时赛" @click="handleAddTime" />
|
||||
<ActionButton
|
||||
v-if="hasExtraTimeBtn" class="position-absolute bottom-20px right-20px" type="text" text="加时赛"
|
||||
@click="handleAddTime"
|
||||
/>
|
||||
</div>
|
||||
<div class="leaderboard-content">
|
||||
<NDataTable
|
||||
:columns="columns" :data="tableData" :bordered="false" :bottom-bordered="false"
|
||||
:columns="columns" :data="tableData" :bordered="false" :bottom-bordered="false" size="large"
|
||||
:row-class-name="rowClassName" class="rank-table"
|
||||
/>
|
||||
</div>
|
||||
@ -177,7 +180,7 @@ function rowClassName(row: TeamData) {
|
||||
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
background: url('@/assets/imgs/user/team-bg.svg') no-repeat center center;
|
||||
background: url('@/assets/imgs/user/team-bg.webp') no-repeat center center;
|
||||
background-size: 100% 100%;
|
||||
transform-origin: center;
|
||||
padding: 40px 20px;
|
||||
|
||||
@ -49,8 +49,8 @@ function handleNext() {
|
||||
|
||||
<template>
|
||||
<CompetitionLayout
|
||||
:show-back="true" :show-next="true" :title="activityName" next-btn-text="下一步" @back="handleBack"
|
||||
@next="handleNext"
|
||||
:show-back="true" back-btn-text="返回" :show-next="true" :title="activityName" next-btn-text="下一步"
|
||||
@back="handleBack" @next="handleNext"
|
||||
>
|
||||
<div class="items-flex-start h-full w-full flex justify-center font-sans">
|
||||
<div class="rules-content-wrapper">
|
||||
|
||||
@ -87,7 +87,7 @@ onMounted(() => {
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<CompetitionLayout :show-back="true" :show-next="true" next-btn-text="下一步" :show-title="false" @next="handleNext" @back="handleBack">
|
||||
<CompetitionLayout :show-back="true" back-btn-text="返回" :show-next="true" next-btn-text="下一步" :show-title="false" @next="handleNext" @back="handleBack">
|
||||
<!-- Scroll Content -->
|
||||
<div class="scroll-container">
|
||||
<!-- 卷轴背景动画容器 -->
|
||||
@ -111,7 +111,7 @@ onMounted(() => {
|
||||
:style="{ '--delay': `${index * 0.4}s` }" @click="selectTeam(item.id)"
|
||||
>
|
||||
<div class="icon-wrapper">
|
||||
<img src="@/assets/imgs/user/team-title-icon.svg" alt="team-icon" class="h-full w-full object-cover">
|
||||
<img src="@/assets/imgs/user/team-title-icon.webp" alt="team-icon" class="h-full w-full object-cover">
|
||||
</div>
|
||||
<div class="team-name">
|
||||
{{ item.name }}
|
||||
@ -175,10 +175,21 @@ onMounted(() => {
|
||||
}
|
||||
}
|
||||
|
||||
// 浮动动画关键帧
|
||||
@keyframes float {
|
||||
0%,
|
||||
100% {
|
||||
transform: translateY(0px);
|
||||
}
|
||||
50% {
|
||||
transform: translateY(-15px);
|
||||
}
|
||||
}
|
||||
|
||||
.title-section {
|
||||
position: absolute;
|
||||
top: 18%; // 使用百分比定位,适应不同比例
|
||||
left: 7%; // 微调位置,根据 1920x1080 下的视觉效果调整
|
||||
top: 130px; // 使用固定像素值,确保在卷轴内部
|
||||
left: 40px; // 距离左边缘的固定距离
|
||||
z-index: 10;
|
||||
|
||||
.scroll-bg {
|
||||
@ -193,6 +204,38 @@ onMounted(() => {
|
||||
}
|
||||
}
|
||||
|
||||
// 添加响应式适配
|
||||
@media (max-width: 1920px) {
|
||||
.title-section {
|
||||
top: 70px;
|
||||
left: 50px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 1440px) {
|
||||
.title-section {
|
||||
top: 60px;
|
||||
left: 40px;
|
||||
|
||||
.scroll-bg .main-title {
|
||||
font-size: 2.5rem;
|
||||
letter-spacing: 15px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 1024px) {
|
||||
.title-section {
|
||||
top: 50px;
|
||||
left: 30px;
|
||||
|
||||
.scroll-bg .main-title {
|
||||
font-size: 2rem;
|
||||
letter-spacing: 10px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.competition-layout :deep(.main-content) {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
@ -217,10 +260,12 @@ onMounted(() => {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
background: url('@/assets/imgs/user/team-bg-animation.svg') no-repeat center center;
|
||||
background: url('@/assets/imgs/user/team-bg-animation.webp') no-repeat center center;
|
||||
background-size: 100% 100%;
|
||||
transform-origin: center; // 确保从中心展开
|
||||
will-change: clip-path; // 优化性能
|
||||
will-change: clip-path, transform; // 优化性能
|
||||
animation: float 3s ease-in-out infinite; // 添加浮动动画
|
||||
padding: 60px 80px; // 添加内边距,确保内容在卷轴内部
|
||||
|
||||
&::before {
|
||||
left: -15px;
|
||||
@ -232,11 +277,12 @@ onMounted(() => {
|
||||
}
|
||||
|
||||
.scroll-content {
|
||||
width: 80%;
|
||||
height: 80%;
|
||||
width: 80%; // 减小宽度,为标题留出空间
|
||||
height: 70%; // 调整高度
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
// margin-left: 120px; // 为左侧标题留出空间
|
||||
}
|
||||
|
||||
.teams-grid {
|
||||
|
||||
@ -27,7 +27,7 @@ export default defineConfig((configEnv) => {
|
||||
},
|
||||
},
|
||||
},
|
||||
plugins: setupVitePlugins(viteEnv, buildTime),
|
||||
plugins: setupVitePlugins(viteEnv, buildTime, configEnv.command === 'build'),
|
||||
define: {
|
||||
BUILD_TIME: JSON.stringify(buildTime),
|
||||
},
|
||||
|
||||
@ -1,468 +0,0 @@
|
||||
{
|
||||
"question_bank": [
|
||||
{
|
||||
"QuestionId": 27,
|
||||
"Name": "jiū 表示小鸟的叫声",
|
||||
"Answer": "啾",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 27,
|
||||
"Name": "liú 表示姓名",
|
||||
"Answer": "刘",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 27,
|
||||
"Name": "zhāng 表示姓氏",
|
||||
"Answer": "张",
|
||||
"Type": "text",
|
||||
"IsGood": 1,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 27,
|
||||
"Name": "wáng 表示姓氏",
|
||||
"Answer": "王",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 27,
|
||||
"Name": "lǐ 表示姓氏",
|
||||
"Answer": "李",
|
||||
"Type": "text",
|
||||
"IsGood": 1,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 27,
|
||||
"Name": "chén 表示姓氏",
|
||||
"Answer": "陈",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 27,
|
||||
"Name": "yáng 表示动物",
|
||||
"Answer": "羊",
|
||||
"Type": "text",
|
||||
"IsGood": 1,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 27,
|
||||
"Name": "mǎ 表示动物",
|
||||
"Answer": "马",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 27,
|
||||
"Name": "niǎo 表示动物",
|
||||
"Answer": "鸟",
|
||||
"Type": "text",
|
||||
"IsGood": 1,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 27,
|
||||
"Name": "yú 表示动物",
|
||||
"Answer": "鱼",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 27,
|
||||
"Name": "gǒu 表示动物",
|
||||
"Answer": "狗",
|
||||
"Type": "text",
|
||||
"IsGood": 1,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 27,
|
||||
"Name": "huā 表示植物",
|
||||
"Answer": "花",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 27,
|
||||
"Name": "shù 表示植物",
|
||||
"Answer": "树",
|
||||
"Type": "text",
|
||||
"IsGood": 1,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 27,
|
||||
"Name": "cǎo 表示植物",
|
||||
"Answer": "草",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 27,
|
||||
"Name": "guǒ 表示植物",
|
||||
"Answer": "果",
|
||||
"Type": "text",
|
||||
"IsGood": 1,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 27,
|
||||
"Name": "yè 表示植物",
|
||||
"Answer": "叶",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 27,
|
||||
"Name": "shuǐ 表示自然元素",
|
||||
"Answer": "水",
|
||||
"Type": "text",
|
||||
"IsGood": 1,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 27,
|
||||
"Name": "huǒ 表示自然元素",
|
||||
"Answer": "火",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 27,
|
||||
"Name": "tǔ 表示自然元素",
|
||||
"Answer": "土",
|
||||
"Type": "text",
|
||||
"IsGood": 1,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 27,
|
||||
"Name": "jīn 表示自然元素",
|
||||
"Answer": "金",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 27,
|
||||
"Name": "mù 表示自然元素",
|
||||
"Answer": "木",
|
||||
"Type": "text",
|
||||
"IsGood": 1,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 27,
|
||||
"Name": "tiān 表示自然",
|
||||
"Answer": "天",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 27,
|
||||
"Name": "dì 表示自然",
|
||||
"Answer": "地",
|
||||
"Type": "text",
|
||||
"IsGood": 1,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 27,
|
||||
"Name": "shān 表示自然",
|
||||
"Answer": "山",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 27,
|
||||
"Name": "chuān 表示自然",
|
||||
"Answer": "川",
|
||||
"Type": "text",
|
||||
"IsGood": 1,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 27,
|
||||
"Name": "hé 表示自然",
|
||||
"Answer": "河",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 27,
|
||||
"Name": "rén 表示人类",
|
||||
"Answer": "人",
|
||||
"Type": "text",
|
||||
"IsGood": 1,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 27,
|
||||
"Name": "kǒu 表示身体",
|
||||
"Answer": "口",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 27,
|
||||
"Name": "shǒu 表示身体",
|
||||
"Answer": "手",
|
||||
"Type": "text",
|
||||
"IsGood": 1,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 27,
|
||||
"Name": "zú 表示身体",
|
||||
"Answer": "足",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 27,
|
||||
"Name": "mù 表示身体",
|
||||
"Answer": "目",
|
||||
"Type": "text",
|
||||
"IsGood": 1,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 27,
|
||||
"Name": "ěr 表示身体",
|
||||
"Answer": "耳",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 27,
|
||||
"Name": "bí 表示身体",
|
||||
"Answer": "鼻",
|
||||
"Type": "text",
|
||||
"IsGood": 1,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 27,
|
||||
"Name": "shé 表示身体",
|
||||
"Answer": "舌",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 27,
|
||||
"Name": "yá 表示身体",
|
||||
"Answer": "牙",
|
||||
"Type": "text",
|
||||
"IsGood": 1,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 27,
|
||||
"Name": "xīn 表示身体",
|
||||
"Answer": "心",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 27,
|
||||
"Name": "gān 表示身体",
|
||||
"Answer": "肝",
|
||||
"Type": "text",
|
||||
"IsGood": 1,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 27,
|
||||
"Name": "chī 表示动作",
|
||||
"Answer": "吃",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 27,
|
||||
"Name": "hē 表示动作",
|
||||
"Answer": "喝",
|
||||
"Type": "text",
|
||||
"IsGood": 1,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 27,
|
||||
"Name": "zǒu 表示动作",
|
||||
"Answer": "走",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 27,
|
||||
"Name": "pǎo 表示动作",
|
||||
"Answer": "跑",
|
||||
"Type": "text",
|
||||
"IsGood": 1,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 27,
|
||||
"Name": "tiào 表示动作",
|
||||
"Answer": "跳",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 27,
|
||||
"Name": "kàn 表示动作",
|
||||
"Answer": "看",
|
||||
"Type": "text",
|
||||
"IsGood": 1,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 27,
|
||||
"Name": "tīng 表示动作",
|
||||
"Answer": "听",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 27,
|
||||
"Name": "shuō 表示动作",
|
||||
"Answer": "说",
|
||||
"Type": "text",
|
||||
"IsGood": 1,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 27,
|
||||
"Name": "dú 表示动作",
|
||||
"Answer": "读",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 27,
|
||||
"Name": "xiě 表示动作",
|
||||
"Answer": "写",
|
||||
"Type": "text",
|
||||
"IsGood": 1,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 27,
|
||||
"Name": "huà 表示动作",
|
||||
"Answer": "画",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 27,
|
||||
"Name": "yī 表示数字",
|
||||
"Answer": "一",
|
||||
"Type": "text",
|
||||
"IsGood": 1,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 27,
|
||||
"Name": "èr 表示数字",
|
||||
"Answer": "二",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 27,
|
||||
"Name": "sān 表示数字",
|
||||
"Answer": "三",
|
||||
"Type": "text",
|
||||
"IsGood": 1,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 27,
|
||||
"Name": "sì 表示数字",
|
||||
"Answer": "四",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 27,
|
||||
"Name": "wǔ 表示数字",
|
||||
"Answer": "五",
|
||||
"Type": "text",
|
||||
"IsGood": 1,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 27,
|
||||
"Name": "liù 表示数字",
|
||||
"Answer": "六",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 27,
|
||||
"Name": "qī 表示数字",
|
||||
"Answer": "七",
|
||||
"Type": "text",
|
||||
"IsGood": 1,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 27,
|
||||
"Name": "bā 表示数字",
|
||||
"Answer": "八",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 27,
|
||||
"Name": "jiǔ 表示数字",
|
||||
"Answer": "九",
|
||||
"Type": "text",
|
||||
"IsGood": 1,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 27,
|
||||
"Name": "shí 表示数字",
|
||||
"Answer": "十",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
}
|
||||
]
|
||||
}
|
||||
100
apps/question-importer/asset/诗词常识.json
Normal file
@ -0,0 +1,100 @@
|
||||
{
|
||||
"question_bank": [
|
||||
{
|
||||
"QuestionId": 34,
|
||||
"Name": "<p>诗人袁枚写的与<strong>美食</strong>有关的书是( )。</p><p><strong> A.《食经》 B.《食珍录》 C.《红楼梦》 D.《随园食单》</strong></p>",
|
||||
"Answer": "D",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 34,
|
||||
"Name": "<p>“我家洗砚池头树”引用了一位<strong>书法家</strong>的典故,这位书法家是( )。</p><p><strong> A.王献之 B.王羲之 C.王冕 D.柳公权</strong></p>",
|
||||
"Answer": "B",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 34,
|
||||
"Name": "<p>“诗中有画,画中有诗”评价的是( )。</p><p><strong> A.杜牧的诗画风格</strong></p><p><strong> B.刘禹锡的诗画风格</strong></p><p><strong> C.苏轼的诗画风格</strong></p><p><strong> D.王维的诗画风格</strong></p>",
|
||||
"Answer": "D",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 34,
|
||||
"Name": "<p>被闻一多称为“<strong>诗中的诗</strong>,顶峰上的顶峰”的诗歌作品是( )。</p><p><strong> A.刘希夷的《代悲白头翁》</strong></p><p><strong> B.杨广的《春江花月夜》</strong></p><p><strong> C.张若虚的《春江花月夜》</strong></p><p><strong> D.李白的《蜀道难》</strong></p>",
|
||||
"Answer": "C",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 34,
|
||||
"Name": "<p>“<strong>梅妻鹤子</strong>”指的是( )。</p><p><strong> A.林逋 B.梅尧臣 C.苏舜钦 D.王安石</strong></p>",
|
||||
"Answer": "A",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 34,
|
||||
"Name": "<p>“一门父子三词客,千古文章八大家。”这副对联中提到的“<strong>三父子</strong>”是( )。</p><p><strong> A.曹操、曹丕、曹植</strong></p><p><strong> B.苏洵、苏轼、苏辙</strong></p><p><strong> C.班彪、班固、班超</strong></p><p><strong> D.阮瑀、阮籍、阮咸</strong></p>",
|
||||
"Answer": "B",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 34,
|
||||
"Name": "<p>诗人刘禹锡被<strong>称</strong>为( )。</p><p><strong> A.“诗鬼” B.“诗豪” C.“诗圣” D.“诗仙”</strong></p>",
|
||||
"Answer": "B",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 34,
|
||||
"Name": "<p>有关诗人卢钺的信息,<strong>不正确</strong>的一项是( )。</p><p><strong> A.别号梅坡</strong></p><p><strong> B.代表作《雪梅》</strong></p><p><strong> C.与辛派词人陈亮是好友</strong></p><p><strong> D.宋朝人</strong></p>",
|
||||
"Answer": "C",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 34,
|
||||
"Name": "<p>诗人王昌龄被<strong>称</strong>为( )。</p><p><strong> A.“五言圣手” B.“七绝圣手” C.“七言圣手” D.“七绝诗人”</strong></p>",
|
||||
"Answer": "B",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 34,
|
||||
"Name": "<p>李商隐与杜牧<strong>合称</strong>( )。</p><p><strong> A.“李杜” B.“杜李” C.“小李杜” D.“唐诗双杰”</strong></p>",
|
||||
"Answer": "C",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 34,
|
||||
"Name": "<p>“南朝四百八十寺”中,“<strong>南朝</strong>”指的是( )。</p><p><strong> A.在南方建都的王朝</strong></p><p><strong> B.宋、齐、魏、陈四个朝代的总称</strong></p><p><strong> C.宋、齐、梁、陈四个朝代的总称</strong></p><p><strong> D.在南京建都的王朝</strong></p>",
|
||||
"Answer": "C",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 34,
|
||||
"Name": "<p>“<strong>初唐四杰</strong>”是指( )。</p><p><strong> A.张若虚、张旭、孔融和贺知章</strong></p><p><strong> B.王勃、杨炯、卢照邻和骆宾王</strong></p><p><strong> C.高适、王昌龄、岑参和王之涣</strong></p><p><strong> D.贺知章、张若虚、张旭和包融</strong></p>",
|
||||
"Answer": "B",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
}
|
||||
]
|
||||
}
|
||||
@ -38,6 +38,9 @@ interface Question {
|
||||
Type: string
|
||||
IsGood: number
|
||||
ImageUrl: string
|
||||
IsDisabled: boolean
|
||||
KeyWord: string
|
||||
KeyWordsIndex: number
|
||||
}
|
||||
|
||||
async function importQuestions() {
|
||||
@ -88,6 +91,9 @@ async function importQuestions() {
|
||||
Type: question.Type,
|
||||
IsGood: question.IsGood,
|
||||
ImageUrl: question.ImageUrl || '',
|
||||
IsDisabled: question.IsDisabled || false,
|
||||
KeyWord: question.KeyWord || '',
|
||||
KeyWordsIndex: question.KeyWordsIndex || 0,
|
||||
}
|
||||
|
||||
// 发送请求
|
||||
|
||||
244
apps/question-importer/store/字词飞花令.json
Normal file
@ -0,0 +1,244 @@
|
||||
{
|
||||
"question_bank": [
|
||||
{
|
||||
"QuestionId": 33,
|
||||
"Name": "年",
|
||||
"Answer": "年年岁岁花相似,岁岁年年人不同。",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 33,
|
||||
"Name": "梅",
|
||||
"Answer": "墙角数枝梅,凌寒独自开。",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 33,
|
||||
"Name": "竹",
|
||||
"Answer": "咬定青山不放松,立根原在破岩中。",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 33,
|
||||
"Name": "柳",
|
||||
"Answer": "碧玉妆成一树高,万条垂下绿丝绦。",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 33,
|
||||
"Name": "飞",
|
||||
"Answer": "飞流直下三千尺,疑是银河落九天。",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 33,
|
||||
"Name": "雨",
|
||||
"Answer": "清明时节雨纷纷,路上行人欲断魂。",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 33,
|
||||
"Name": "春",
|
||||
"Answer": "春色满园关不住,一枝红杏出墙来。",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 33,
|
||||
"Name": "一",
|
||||
"Answer": "一道残阳铺水中,半江瑟瑟半江红。",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 33,
|
||||
"Name": "三",
|
||||
"Answer": "故人西辞黄鹤楼,烟花三月下扬州。",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 33,
|
||||
"Name": "小",
|
||||
"Answer": "小荷才露尖尖角,早有蜻蜓立上头。",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 33,
|
||||
"Name": "月",
|
||||
"Answer": "床前明月光,疑是地上霜。",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 33,
|
||||
"Name": "天",
|
||||
"Answer": "天苍苍,野茫茫,风吹草低见牛羊。",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 33,
|
||||
"Name": "水",
|
||||
"Answer": "问渠那得清如许?为有源头活水来。",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 33,
|
||||
"Name": "人",
|
||||
"Answer": "桃花潭水深千尺,不及汪伦送我情。",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 33,
|
||||
"Name": "花",
|
||||
"Answer": "待到重阳日,还来就菊花。",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 33,
|
||||
"Name": "红",
|
||||
"Answer": "接天莲叶无穷碧,映日荷花别样红。",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 33,
|
||||
"Name": "白",
|
||||
"Answer": "一行白鹭上青天。",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 33,
|
||||
"Name": "山",
|
||||
"Answer": "横看成岭侧成峰,远近高低各不同。",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 33,
|
||||
"Name": "河",
|
||||
"Answer": "三万里河东入海,五千仞岳上摩天。",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 33,
|
||||
"Name": "秋",
|
||||
"Answer": "自古逢秋悲寂寥,我言秋日胜春朝。",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 33,
|
||||
"Name": "千里",
|
||||
"Answer": "欲穷千里目,更上一层楼。",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 33,
|
||||
"Name": "黄河",
|
||||
"Answer": "黄河之水天上来,奔流到海不复回。",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 33,
|
||||
"Name": "洛阳",
|
||||
"Answer": "洛阳亲友如相问,一片冰心在玉壶。",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 33,
|
||||
"Name": "东风",
|
||||
"Answer": "等闲识得东风面,万紫千红总是春。",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 33,
|
||||
"Name": "桃花",
|
||||
"Answer": "西塞山前白鹭飞,桃花流水鳜鱼肥。",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 33,
|
||||
"Name": "黄鹂",
|
||||
"Answer": "两个黄鹂鸣翠柳,一行白鹭上青天。",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 33,
|
||||
"Name": "相思",
|
||||
"Answer": "红豆生南国,春来发几枝?愿君多采撷,此物最相思。",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 33,
|
||||
"Name": "江南",
|
||||
"Answer": "春风又绿江南岸,明月何时照我还。",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 33,
|
||||
"Name": "燕子",
|
||||
"Answer": "旧时王谢堂前燕,飞入寻常百姓家。",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 33,
|
||||
"Name": "牧童",
|
||||
"Answer": "借问酒家何处有?牧童遥指杏花村。",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
}
|
||||
]
|
||||
}
|
||||
204
apps/question-importer/store/情景猜诗句.json
Normal file
@ -0,0 +1,204 @@
|
||||
{
|
||||
"question_bank": [
|
||||
{
|
||||
"QuestionId": 31,
|
||||
"Name": "小明和家人去西湖旅游。晴朗时,湖面波光粼粼,美极了;细雨中,湖面雾气蒙蒙,也别有一番韵味。他看着这迷人的湖光山色,心想:",
|
||||
"Answer": "水光潋滟晴方好,山色空蒙雨亦奇。",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 31,
|
||||
"Name": "春天,你和姐姐在路上看到一棵很大的柳树,翠绿又茂密的枝条在风中轻轻摇摆,就像一条条绿丝带在随风舞蹈。姐姐正想拍照,你脱口而出一句诗:",
|
||||
"Answer": "碧玉妆成一树高,万条垂下绿丝绦。",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 31,
|
||||
"Name": "晚上,你和爸爸在湖边餐厅吃饭。窗外月光如水,湖中央那座翠绿的小岛,远远望去,就像一只精巧的青螺放在白银盘子里。这让你想到了一句诗:",
|
||||
"Answer": "遥望洞庭山水翠,白银盘里一青螺。",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 31,
|
||||
"Name": "大年初一一早,阳光温暖,家家户户都在贴春联。你帮爸爸撕下旧春联,贴上红彤彤的新春联。爸爸笑着说:“旧的去了,新的来了,新的一年我们要红红火火!”看着贴好的春联,你想到了那句诗:",
|
||||
"Answer": "千门万户曈曈日,总把新桃换旧符。",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 31,
|
||||
"Name": "深秋的公园里,一池荷叶已经枯萎凋谢。秋霜中,路边的菊花虽然花瓣落了,它却依然挺立着枝干。看着这一幕,你想到了哪句诗?",
|
||||
"Answer": "荷尽已无擎雨盖,菊残犹有傲霜枝。",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 31,
|
||||
"Name": "中秋夜,全家在阳台赏月,妈妈端来月饼,给大家讲了嫦娥因为偷吃仙丹奔月的故事。你托着下巴看着天上又圆又亮的月亮,突然想到嫦娥会不会很孤单,转而想到了一句诗:",
|
||||
"Answer": "嫦娥应悔偷灵药,碧海青天夜夜心。",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 31,
|
||||
"Name": "你和小伙伴去爬山。你们发现,从正面看山峦连绵起伏,从侧面看却成了高耸的山峰。原来站的位置不同,看到的景色也全然不同。这让你想到了苏轼的著名诗句:",
|
||||
"Answer": "横看成岭侧成峰,远近高低各不同。",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 31,
|
||||
"Name": "夏季的一天,你和家人正在湖上泛舟,天色突然变得漆黑,像打翻的墨汁,豆大的雨点噼里啪啦地砸下来,像无数颗珍珠一样,在小船周围的水面上跳跃、飞溅,溅起的水花打湿了船身。这样的情况让你想到了苏轼的一句诗:",
|
||||
"Answer": "黑云翻墨未遮山,白雨跳珠乱入船。",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 31,
|
||||
"Name": "你的好朋友因为父母工作调动,要转学去其他地方。送别时,他有点担心到了一个陌生的环境会感到孤单。你拍拍他的肩膀,很肯定地说:“放心吧,你这么优秀又开朗,走到哪里都会有人跟你玩的!正如那句诗所说……”",
|
||||
"Answer": "莫愁前路无知己,天下谁人不识君?",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 31,
|
||||
"Name": "夕阳的余晖铺在水上,江水一半呈现出碧绿色,另一半则是殷红色,交织在一起美极了。这时你脑海中浮现出一句诗:",
|
||||
"Answer": "一道残阳铺水中,半江瑟瑟半江红。",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 31,
|
||||
"Name": "冬天来了,你看着窗外洁白的梅花和纷纷扬扬飘落的雪花。妈妈在一旁说道:“雪花真好看,洁白晶莹。”姐姐说:“梅花才好看,而且它是真正的花,有香味。”她们的争论让你想到了一句诗:",
|
||||
"Answer": "梅须逊雪三分白,雪却输梅一段香。",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 31,
|
||||
"Name": "劳动课去果园,你看到梅子变得金黄,杏子也长得圆滚滚的。旁边的田野里,荞麦花雪白一片,油菜花却已经有些稀疏了。这初夏时节的乡村景象,让你忍不住背出一句诗:",
|
||||
"Answer": "梅子金黄杏子肥,麦花雪白菜花稀。",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 31,
|
||||
"Name": "四月,你和家人去山里玩,发现山下的花都谢了,不禁有点失望。爬到半山腰时,你们忽然看见了一座小寺庙,寺庙旁几棵桃树开得正艳,粉嘟嘟的花瓣在风里轻轻摇晃。这让你想到了一句诗:",
|
||||
"Answer": "人间四月芳菲尽,山寺桃花始盛开。",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 31,
|
||||
"Name": "你去参观农耕展览馆,看到左边展区有农民白天锄地的雕塑,右边展区是夜晚农妇纺线的场景。讲解员说:“古代农村是全家分工,昼夜忙碌。”你立刻想到一句诗:",
|
||||
"Answer": "昼出耘田夜绩麻,村庄儿女各当家。",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 31,
|
||||
"Name": "夏天,小明蹲在池塘边玩,看到池水清澈见底,连水底的小石子都看得一清二楚。于是他顺着水流往上游走,发现原来是有活水在源源不断地流进来。他顿时想到了一句诗:",
|
||||
"Answer": "问渠那得清如许?为有源头活水来。",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 31,
|
||||
"Name": "小明家有一个特别干净的小院子,爷爷奶奶每天都会把院子打扫得一尘不染,一点青苔都没有。院子里还有爷爷奶奶亲手种下并且精心打理的各种各样的花,有月季、茉莉、菊花等。你去他家玩时,想到了一句诗:",
|
||||
"Answer": "茅檐长扫净无苔,花木成畦手自栽。",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 31,
|
||||
"Name": "美术课上,小明只用水墨画了一幅梅花。虽然没有鲜艳的颜色,但他觉得这梅花自有清气,不需要别人赞赏它的颜色好不好看。这正是那句诗所描写的意境:",
|
||||
"Answer": "不要人夸好颜色,只留清气满乾坤。",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 31,
|
||||
"Name": "春天,你和朋友去公园写生。樱花、桃花、迎春花等都在春风的吹拂下摇动起来。你将眼前的一幕画了下来,还在画纸角落题了一句朱熹的诗:",
|
||||
"Answer": "等闲识得东风面,万紫千红总是春。",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 31,
|
||||
"Name": "早春的上学路上,天正下着蒙蒙细雨,让空气都变得湿润起来。远远望去,地上像铺了一层绿毯,可走近仔细一看,草芽太小,绿色反而看不清了。这奇妙的景象让你想到了:",
|
||||
"Answer": "天街小雨润如酥,草色遥看近却无。",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 31,
|
||||
"Name": "春天的时候,你和小伙伴们在一条小巷里散步。突然,你抬头看到一面院墙上探出了几朵娇艳的红花,红得那么鲜亮,把整个墙头都点亮了!大家不禁猜测院墙内会是一幅怎样的景象。这时,你想到了一句能表现此情此景的诗:",
|
||||
"Answer": "春色满园关不住,一枝红杏出墙来。",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 31,
|
||||
"Name": "爷爷年轻时就离开家乡工作,现在年纪大了才回到老家。虽然他说话的口音没变,可头发已经花白了。你看着他,想到了一句诗:",
|
||||
"Answer": "少小离家老大回,乡音无改鬓毛衰。",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 31,
|
||||
"Name": "地理课上,老师播放视频:黄河水从西向东奔流,最后注入大海;华山高耸入云,山峰直插云霄,好像天都要被戳破了。你看着这壮丽的画面,心潮澎湃,想到了一句诗:",
|
||||
"Answer": "三万里河东入海,五千仞岳上摩天。",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 31,
|
||||
"Name": "暑假,乐乐和好朋友去江边玩。他们坐在岸边,看远处的小船慢慢驶向远方,船越来越小,最后消失不见,眼前只剩下宽阔的江水,缓缓流向天边。看到这样的画面,乐乐想到了一句诗:",
|
||||
"Answer": "孤帆远影碧空尽,唯见长江天际流。",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 31,
|
||||
"Name": "小明在学校花园里观察到,一根竹子被冬雪压弯了腰,被大风吹得东倒西歪,它却怎么也不肯倒下。这让小明想到了一句诗:",
|
||||
"Answer": "千磨万击还坚劲,任尔东西南北风。",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 31,
|
||||
"Name": "夏日的西湖,阳光洒满湖面。你在湖边放眼望去,满湖翠绿的荷叶仿佛要延伸到天际,点缀其间的荷花在阳光下红得格外娇艳。看到此情此景,你想到了哪句诗?",
|
||||
"Answer": "接天莲叶无穷碧,映日荷花别样红。",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
}
|
||||
]
|
||||
}
|
||||
@ -1,340 +0,0 @@
|
||||
{
|
||||
"question_bank": [
|
||||
{
|
||||
"QuestionId": 5,
|
||||
"Name": "请写出含有反义词的四字成语。",
|
||||
"Answer": "深入浅出、喜怒无常、厚此薄彼、眼高手低、头重脚轻、继往开来、顾此失彼、哭笑不得、举足轻重、不相上下、悲喜交加、软硬兼施、文武双全、雅俗共赏、喜怒哀乐、恩怨分明、否极泰来、祸福相依、黑白分明、功败垂成、新陈代谢、盛衰荣辱、似是而非、此起彼伏、争先恐后、坐立不安、动静皆宜、以静制动、一动不如一静、大惊小怪、小题大做、大同小异、因小失大、大材小用、无中生有、有始无终、有勇无谋、有名无实、有眼无珠、有备无患、有恃无恐、得失参半、得不偿失、死里逃生、东张西望、左顾右盼、南辕北辙、前赴后继、里应外合、声东击西、上天入地、内忧外患、朝秦暮楚、朝令夕改、古为今用、今非昔比、早出晚归、昼伏夜出",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 5,
|
||||
"Name": "请写出含有反义词的四字成语。",
|
||||
"Answer": "深入浅出、喜怒无常、厚此薄彼、眼高手低、头重脚轻、继往开来、顾此失彼、哭笑不得、举足轻重、不相上下、悲喜交加、软硬兼施、文武双全、雅俗共赏、喜怒哀乐、恩怨分明、否极泰来、祸福相依、黑白分明、功败垂成、新陈代谢、盛衰荣辱、似是而非、此起彼伏、争先恐后、坐立不安、动静皆宜、以静制动、一动不如一静、大惊小怪、小题大做、大同小异、因小失大、大材小用、无中生有、有始无终、有勇无谋、有名无实、有眼无珠、有备无患、有恃无恐、得失参半、得不偿失、死里逃生、东张西望、左顾右盼、南辕北辙、前赴后继、里应外合、声东击西、上天入地、内忧外患、朝秦暮楚、朝令夕改、古为今用、今非昔比、早出晚归、昼伏夜出",
|
||||
"Type": "text",
|
||||
"IsGood": 1,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 5,
|
||||
"Name": "请写出含有反义词的四字成语。",
|
||||
"Answer": "深入浅出、喜怒无常、厚此薄彼、眼高手低、头重脚轻、继往开来、顾此失彼、哭笑不得、举足轻重、不相上下、悲喜交加、软硬兼施、文武双全、雅俗共赏、喜怒哀乐、恩怨分明、否极泰来、祸福相依、黑白分明、功败垂成、新陈代谢、盛衰荣辱、似是而非、此起彼伏、争先恐后、坐立不安、动静皆宜、以静制动、一动不如一静、大惊小怪、小题大做、大同小异、因小失大、大材小用、无中生有、有始无终、有勇无谋、有名无实、有眼无珠、有备无患、有恃无恐、得失参半、得不偿失、死里逃生、东张西望、左顾右盼、南辕北辙、前赴后继、里应外合、声东击西、上天入地、内忧外患、朝秦暮楚、朝令夕改、古为今用、今非昔比、早出晚归、昼伏夜出",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 5,
|
||||
"Name": "请写出含有反义词的四字成语。",
|
||||
"Answer": "深入浅出、喜怒无常、厚此薄彼、眼高手低、头重脚轻、继往开来、顾此失彼、哭笑不得、举足轻重、不相上下、悲喜交加、软硬兼施、文武双全、雅俗共赏、喜怒哀乐、恩怨分明、否极泰来、祸福相依、黑白分明、功败垂成、新陈代谢、盛衰荣辱、似是而非、此起彼伏、争先恐后、坐立不安、动静皆宜、以静制动、一动不如一静、大惊小怪、小题大做、大同小异、因小失大、大材小用、无中生有、有始无终、有勇无谋、有名无实、有眼无珠、有备无患、有恃无恐、得失参半、得不偿失、死里逃生、东张西望、左顾右盼、南辕北辙、前赴后继、里应外合、声东击西、上天入地、内忧外患、朝秦暮楚、朝令夕改、古为今用、今非昔比、早出晚归、昼伏夜出",
|
||||
"Type": "text",
|
||||
"IsGood": 1,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 5,
|
||||
"Name": "请写出含有反义词的四字成语。",
|
||||
"Answer": "深入浅出、喜怒无常、厚此薄彼、眼高手低、头重脚轻、继往开来、顾此失彼、哭笑不得、举足轻重、不相上下、悲喜交加、软硬兼施、文武双全、雅俗共赏、喜怒哀乐、恩怨分明、否极泰来、祸福相依、黑白分明、功败垂成、新陈代谢、盛衰荣辱、似是而非、此起彼伏、争先恐后、坐立不安、动静皆宜、以静制动、一动不如一静、大惊小怪、小题大做、大同小异、因小失大、大材小用、无中生有、有始无终、有勇无谋、有名无实、有眼无珠、有备无患、有恃无恐、得失参半、得不偿失、死里逃生、东张西望、左顾右盼、南辕北辙、前赴后继、里应外合、声东击西、上天入地、内忧外患、朝秦暮楚、朝令夕改、古为今用、今非昔比、早出晚归、昼伏夜出",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 5,
|
||||
"Name": "请写出含有反义词的四字成语。",
|
||||
"Answer": "深入浅出、喜怒无常、厚此薄彼、眼高手低、头重脚轻、继往开来、顾此失彼、哭笑不得、举足轻重、不相上下、悲喜交加、软硬兼施、文武双全、雅俗共赏、喜怒哀乐、恩怨分明、否极泰来、祸福相依、黑白分明、功败垂成、新陈代谢、盛衰荣辱、似是而非、此起彼伏、争先恐后、坐立不安、动静皆宜、以静制动、一动不如一静、大惊小怪、小题大做、大同小异、因小失大、大材小用、无中生有、有始无终、有勇无谋、有名无实、有眼无珠、有备无患、有恃无恐、得失参半、得不偿失、死里逃生、东张西望、左顾右盼、南辕北辙、前赴后继、里应外合、声东击西、上天入地、内忧外患、朝秦暮楚、朝令夕改、古为今用、今非昔比、早出晚归、昼伏夜出",
|
||||
"Type": "text",
|
||||
"IsGood": 1,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 5,
|
||||
"Name": "请写出含有反义词的四字成语。",
|
||||
"Answer": "深入浅出、喜怒无常、厚此薄彼、眼高手低、头重脚轻、继往开来、顾此失彼、哭笑不得、举足轻重、不相上下、悲喜交加、软硬兼施、文武双全、雅俗共赏、喜怒哀乐、恩怨分明、否极泰来、祸福相依、黑白分明、功败垂成、新陈代谢、盛衰荣辱、似是而非、此起彼伏、争先恐后、坐立不安、动静皆宜、以静制动、一动不如一静、大惊小怪、小题大做、大同小异、因小失大、大材小用、无中生有、有始无终、有勇无谋、有名无实、有眼无珠、有备无患、有恃无恐、得失参半、得不偿失、死里逃生、东张西望、左顾右盼、南辕北辙、前赴后继、里应外合、声东击西、上天入地、内忧外患、朝秦暮楚、朝令夕改、古为今用、今非昔比、早出晚归、昼伏夜出",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 5,
|
||||
"Name": "请写出含有反义词的四字成语。",
|
||||
"Answer": "深入浅出、喜怒无常、厚此薄彼、眼高手低、头重脚轻、继往开来、顾此失彼、哭笑不得、举足轻重、不相上下、悲喜交加、软硬兼施、文武双全、雅俗共赏、喜怒哀乐、恩怨分明、否极泰来、祸福相依、黑白分明、功败垂成、新陈代谢、盛衰荣辱、似是而非、此起彼伏、争先恐后、坐立不安、动静皆宜、以静制动、一动不如一静、大惊小怪、小题大做、大同小异、因小失大、大材小用、无中生有、有始无终、有勇无谋、有名无实、有眼无珠、有备无患、有恃无恐、得失参半、得不偿失、死里逃生、东张西望、左顾右盼、南辕北辙、前赴后继、里应外合、声东击西、上天入地、内忧外患、朝秦暮楚、朝令夕改、古为今用、今非昔比、早出晚归、昼伏夜出",
|
||||
"Type": "text",
|
||||
"IsGood": 1,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 5,
|
||||
"Name": "请写出含有反义词的四字成语。",
|
||||
"Answer": "深入浅出、喜怒无常、厚此薄彼、眼高手低、头重脚轻、继往开来、顾此失彼、哭笑不得、举足轻重、不相上下、悲喜交加、软硬兼施、文武双全、雅俗共赏、喜怒哀乐、恩怨分明、否极泰来、祸福相依、黑白分明、功败垂成、新陈代谢、盛衰荣辱、似是而非、此起彼伏、争先恐后、坐立不安、动静皆宜、以静制动、一动不如一静、大惊小怪、小题大做、大同小异、因小失大、大材小用、无中生有、有始无终、有勇无谋、有名无实、有眼无珠、有备无患、有恃无恐、得失参半、得不偿失、死里逃生、东张西望、左顾右盼、南辕北辙、前赴后继、里应外合、声东击西、上天入地、内忧外患、朝秦暮楚、朝令夕改、古为今用、今非昔比、早出晚归、昼伏夜出",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 5,
|
||||
"Name": "请写出含有反义词的四字成语。",
|
||||
"Answer": "深入浅出、喜怒无常、厚此薄彼、眼高手低、头重脚轻、继往开来、顾此失彼、哭笑不得、举足轻重、不相上下、悲喜交加、软硬兼施、文武双全、雅俗共赏、喜怒哀乐、恩怨分明、否极泰来、祸福相依、黑白分明、功败垂成、新陈代谢、盛衰荣辱、似是而非、此起彼伏、争先恐后、坐立不安、动静皆宜、以静制动、一动不如一静、大惊小怪、小题大做、大同小异、因小失大、大材小用、无中生有、有始无终、有勇无谋、有名无实、有眼无珠、有备无患、有恃无恐、得失参半、得不偿失、死里逃生、东张西望、左顾右盼、南辕北辙、前赴后继、里应外合、声东击西、上天入地、内忧外患、朝秦暮楚、朝令夕改、古为今用、今非昔比、早出晚归、昼伏夜出",
|
||||
"Type": "text",
|
||||
"IsGood": 1,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 5,
|
||||
"Name": "请写出含有反义词的四字成语。",
|
||||
"Answer": "深入浅出、喜怒无常、厚此薄彼、眼高手低、头重脚轻、继往开来、顾此失彼、哭笑不得、举足轻重、不相上下、悲喜交加、软硬兼施、文武双全、雅俗共赏、喜怒哀乐、恩怨分明、否极泰来、祸福相依、黑白分明、功败垂成、新陈代谢、盛衰荣辱、似是而非、此起彼伏、争先恐后、坐立不安、动静皆宜、以静制动、一动不如一静、大惊小怪、小题大做、大同小异、因小失大、大材小用、无中生有、有始无终、有勇无谋、有名无实、有眼无珠、有备无患、有恃无恐、得失参半、得不偿失、死里逃生、东张西望、左顾右盼、南辕北辙、前赴后继、里应外合、声东击西、上天入地、内忧外患、朝秦暮楚、朝令夕改、古为今用、今非昔比、早出晚归、昼伏夜出",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 5,
|
||||
"Name": "请写出含有反义词的四字成语。",
|
||||
"Answer": "深入浅出、喜怒无常、厚此薄彼、眼高手低、头重脚轻、继往开来、顾此失彼、哭笑不得、举足轻重、不相上下、悲喜交加、软硬兼施、文武双全、雅俗共赏、喜怒哀乐、恩怨分明、否极泰来、祸福相依、黑白分明、功败垂成、新陈代谢、盛衰荣辱、似是而非、此起彼伏、争先恐后、坐立不安、动静皆宜、以静制动、一动不如一静、大惊小怪、小题大做、大同小异、因小失大、大材小用、无中生有、有始无终、有勇无谋、有名无实、有眼无珠、有备无患、有恃无恐、得失参半、得不偿失、死里逃生、东张西望、左顾右盼、南辕北辙、前赴后继、里应外合、声东击西、上天入地、内忧外患、朝秦暮楚、朝令夕改、古为今用、今非昔比、早出晚归、昼伏夜出",
|
||||
"Type": "text",
|
||||
"IsGood": 1,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 5,
|
||||
"Name": "请写出含有反义词的四字成语。",
|
||||
"Answer": "深入浅出、喜怒无常、厚此薄彼、眼高手低、头重脚轻、继往开来、顾此失彼、哭笑不得、举足轻重、不相上下、悲喜交加、软硬兼施、文武双全、雅俗共赏、喜怒哀乐、恩怨分明、否极泰来、祸福相依、黑白分明、功败垂成、新陈代谢、盛衰荣辱、似是而非、此起彼伏、争先恐后、坐立不安、动静皆宜、以静制动、一动不如一静、大惊小怪、小题大做、大同小异、因小失大、大材小用、无中生有、有始无终、有勇无谋、有名无实、有眼无珠、有备无患、有恃无恐、得失参半、得不偿失、死里逃生、东张西望、左顾右盼、南辕北辙、前赴后继、里应外合、声东击西、上天入地、内忧外患、朝秦暮楚、朝令夕改、古为今用、今非昔比、早出晚归、昼伏夜出",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 5,
|
||||
"Name": "请写出含有反义词的四字成语。",
|
||||
"Answer": "深入浅出、喜怒无常、厚此薄彼、眼高手低、头重脚轻、继往开来、顾此失彼、哭笑不得、举足轻重、不相上下、悲喜交加、软硬兼施、文武双全、雅俗共赏、喜怒哀乐、恩怨分明、否极泰来、祸福相依、黑白分明、功败垂成、新陈代谢、盛衰荣辱、似是而非、此起彼伏、争先恐后、坐立不安、动静皆宜、以静制动、一动不如一静、大惊小怪、小题大做、大同小异、因小失大、大材小用、无中生有、有始无终、有勇无谋、有名无实、有眼无珠、有备无患、有恃无恐、得失参半、得不偿失、死里逃生、东张西望、左顾右盼、南辕北辙、前赴后继、里应外合、声东击西、上天入地、内忧外患、朝秦暮楚、朝令夕改、古为今用、今非昔比、早出晚归、昼伏夜出",
|
||||
"Type": "text",
|
||||
"IsGood": 1,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 5,
|
||||
"Name": "请写出含有反义词的四字成语。",
|
||||
"Answer": "深入浅出、喜怒无常、厚此薄彼、眼高手低、头重脚轻、继往开来、顾此失彼、哭笑不得、举足轻重、不相上下、悲喜交加、软硬兼施、文武双全、雅俗共赏、喜怒哀乐、恩怨分明、否极泰来、祸福相依、黑白分明、功败垂成、新陈代谢、盛衰荣辱、似是而非、此起彼伏、争先恐后、坐立不安、动静皆宜、以静制动、一动不如一静、大惊小怪、小题大做、大同小异、因小失大、大材小用、无中生有、有始无终、有勇无谋、有名无实、有眼无珠、有备无患、有恃无恐、得失参半、得不偿失、死里逃生、东张西望、左顾右盼、南辕北辙、前赴后继、里应外合、声东击西、上天入地、内忧外患、朝秦暮楚、朝令夕改、古为今用、今非昔比、早出晚归、昼伏夜出",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 5,
|
||||
"Name": "请写出含有反义词的四字成语。",
|
||||
"Answer": "深入浅出、喜怒无常、厚此薄彼、眼高手低、头重脚轻、继往开来、顾此失彼、哭笑不得、举足轻重、不相上下、悲喜交加、软硬兼施、文武双全、雅俗共赏、喜怒哀乐、恩怨分明、否极泰来、祸福相依、黑白分明、功败垂成、新陈代谢、盛衰荣辱、似是而非、此起彼伏、争先恐后、坐立不安、动静皆宜、以静制动、一动不如一静、大惊小怪、小题大做、大同小异、因小失大、大材小用、无中生有、有始无终、有勇无谋、有名无实、有眼无珠、有备无患、有恃无恐、得失参半、得不偿失、死里逃生、东张西望、左顾右盼、南辕北辙、前赴后继、里应外合、声东击西、上天入地、内忧外患、朝秦暮楚、朝令夕改、古为今用、今非昔比、早出晚归、昼伏夜出",
|
||||
"Type": "text",
|
||||
"IsGood": 1,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 5,
|
||||
"Name": "请写出含有反义词的四字成语。",
|
||||
"Answer": "深入浅出、喜怒无常、厚此薄彼、眼高手低、头重脚轻、继往开来、顾此失彼、哭笑不得、举足轻重、不相上下、悲喜交加、软硬兼施、文武双全、雅俗共赏、喜怒哀乐、恩怨分明、否极泰来、祸福相依、黑白分明、功败垂成、新陈代谢、盛衰荣辱、似是而非、此起彼伏、争先恐后、坐立不安、动静皆宜、以静制动、一动不如一静、大惊小怪、小题大做、大同小异、因小失大、大材小用、无中生有、有始无终、有勇无谋、有名无实、有眼无珠、有备无患、有恃无恐、得失参半、得不偿失、死里逃生、东张西望、左顾右盼、南辕北辙、前赴后继、里应外合、声东击西、上天入地、内忧外患、朝秦暮楚、朝令夕改、古为今用、今非昔比、早出晚归、昼伏夜出",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 5,
|
||||
"Name": "请写出含有反义词的四字成语。",
|
||||
"Answer": "深入浅出、喜怒无常、厚此薄彼、眼高手低、头重脚轻、继往开来、顾此失彼、哭笑不得、举足轻重、不相上下、悲喜交加、软硬兼施、文武双全、雅俗共赏、喜怒哀乐、恩怨分明、否极泰来、祸福相依、黑白分明、功败垂成、新陈代谢、盛衰荣辱、似是而非、此起彼伏、争先恐后、坐立不安、动静皆宜、以静制动、一动不如一静、大惊小怪、小题大做、大同小异、因小失大、大材小用、无中生有、有始无终、有勇无谋、有名无实、有眼无珠、有备无患、有恃无恐、得失参半、得不偿失、死里逃生、东张西望、左顾右盼、南辕北辙、前赴后继、里应外合、声东击西、上天入地、内忧外患、朝秦暮楚、朝令夕改、古为今用、今非昔比、早出晚归、昼伏夜出",
|
||||
"Type": "text",
|
||||
"IsGood": 1,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 5,
|
||||
"Name": "请写出含有反义词的四字成语。",
|
||||
"Answer": "深入浅出、喜怒无常、厚此薄彼、眼高手低、头重脚轻、继往开来、顾此失彼、哭笑不得、举足轻重、不相上下、悲喜交加、软硬兼施、文武双全、雅俗共赏、喜怒哀乐、恩怨分明、否极泰来、祸福相依、黑白分明、功败垂成、新陈代谢、盛衰荣辱、似是而非、此起彼伏、争先恐后、坐立不安、动静皆宜、以静制动、一动不如一静、大惊小怪、小题大做、大同小异、因小失大、大材小用、无中生有、有始无终、有勇无谋、有名无实、有眼无珠、有备无患、有恃无恐、得失参半、得不偿失、死里逃生、东张西望、左顾右盼、南辕北辙、前赴后继、里应外合、声东击西、上天入地、内忧外患、朝秦暮楚、朝令夕改、古为今用、今非昔比、早出晚归、昼伏夜出",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 5,
|
||||
"Name": "请写出含有反义词的四字成语。",
|
||||
"Answer": "深入浅出、喜怒无常、厚此薄彼、眼高手低、头重脚轻、继往开来、顾此失彼、哭笑不得、举足轻重、不相上下、悲喜交加、软硬兼施、文武双全、雅俗共赏、喜怒哀乐、恩怨分明、否极泰来、祸福相依、黑白分明、功败垂成、新陈代谢、盛衰荣辱、似是而非、此起彼伏、争先恐后、坐立不安、动静皆宜、以静制动、一动不如一静、大惊小怪、小题大做、大同小异、因小失大、大材小用、无中生有、有始无终、有勇无谋、有名无实、有眼无珠、有备无患、有恃无恐、得失参半、得不偿失、死里逃生、东张西望、左顾右盼、南辕北辙、前赴后继、里应外合、声东击西、上天入地、内忧外患、朝秦暮楚、朝令夕改、古为今用、今非昔比、早出晚归、昼伏夜出",
|
||||
"Type": "text",
|
||||
"IsGood": 1,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 5,
|
||||
"Name": "请写出含有反义词的四字成语。",
|
||||
"Answer": "深入浅出、喜怒无常、厚此薄彼、眼高手低、头重脚轻、继往开来、顾此失彼、哭笑不得、举足轻重、不相上下、悲喜交加、软硬兼施、文武双全、雅俗共赏、喜怒哀乐、恩怨分明、否极泰来、祸福相依、黑白分明、功败垂成、新陈代谢、盛衰荣辱、似是而非、此起彼伏、争先恐后、坐立不安、动静皆宜、以静制动、一动不如一静、大惊小怪、小题大做、大同小异、因小失大、大材小用、无中生有、有始无终、有勇无谋、有名无实、有眼无珠、有备无患、有恃无恐、得失参半、得不偿失、死里逃生、东张西望、左顾右盼、南辕北辙、前赴后继、里应外合、声东击西、上天入地、内忧外患、朝秦暮楚、朝令夕改、古为今用、今非昔比、早出晚归、昼伏夜出",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 5,
|
||||
"Name": "请写出含有反义词的四字成语。",
|
||||
"Answer": "深入浅出、喜怒无常、厚此薄彼、眼高手低、头重脚轻、继往开来、顾此失彼、哭笑不得、举足轻重、不相上下、悲喜交加、软硬兼施、文武双全、雅俗共赏、喜怒哀乐、恩怨分明、否极泰来、祸福相依、黑白分明、功败垂成、新陈代谢、盛衰荣辱、似是而非、此起彼伏、争先恐后、坐立不安、动静皆宜、以静制动、一动不如一静、大惊小怪、小题大做、大同小异、因小失大、大材小用、无中生有、有始无终、有勇无谋、有名无实、有眼无珠、有备无患、有恃无恐、得失参半、得不偿失、死里逃生、东张西望、左顾右盼、南辕北辙、前赴后继、里应外合、声东击西、上天入地、内忧外患、朝秦暮楚、朝令夕改、古为今用、今非昔比、早出晚归、昼伏夜出",
|
||||
"Type": "text",
|
||||
"IsGood": 1,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 5,
|
||||
"Name": "请写出含有反义词的四字成语。",
|
||||
"Answer": "深入浅出、喜怒无常、厚此薄彼、眼高手低、头重脚轻、继往开来、顾此失彼、哭笑不得、举足轻重、不相上下、悲喜交加、软硬兼施、文武双全、雅俗共赏、喜怒哀乐、恩怨分明、否极泰来、祸福相依、黑白分明、功败垂成、新陈代谢、盛衰荣辱、似是而非、此起彼伏、争先恐后、坐立不安、动静皆宜、以静制动、一动不如一静、大惊小怪、小题大做、大同小异、因小失大、大材小用、无中生有、有始无终、有勇无谋、有名无实、有眼无珠、有备无患、有恃无恐、得失参半、得不偿失、死里逃生、东张西望、左顾右盼、南辕北辙、前赴后继、里应外合、声东击西、上天入地、内忧外患、朝秦暮楚、朝令夕改、古为今用、今非昔比、早出晚归、昼伏夜出",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 5,
|
||||
"Name": "请写出含有反义词的四字成语。",
|
||||
"Answer": "深入浅出、喜怒无常、厚此薄彼、眼高手低、头重脚轻、继往开来、顾此失彼、哭笑不得、举足轻重、不相上下、悲喜交加、软硬兼施、文武双全、雅俗共赏、喜怒哀乐、恩怨分明、否极泰来、祸福相依、黑白分明、功败垂成、新陈代谢、盛衰荣辱、似是而非、此起彼伏、争先恐后、坐立不安、动静皆宜、以静制动、一动不如一静、大惊小怪、小题大做、大同小异、因小失大、大材小用、无中生有、有始无终、有勇无谋、有名无实、有眼无珠、有备无患、有恃无恐、得失参半、得不偿失、死里逃生、东张西望、左顾右盼、南辕北辙、前赴后继、里应外合、声东击西、上天入地、内忧外患、朝秦暮楚、朝令夕改、古为今用、今非昔比、早出晚归、昼伏夜出",
|
||||
"Type": "text",
|
||||
"IsGood": 1,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 5,
|
||||
"Name": "请写出含有反义词的四字成语。",
|
||||
"Answer": "深入浅出、喜怒无常、厚此薄彼、眼高手低、头重脚轻、继往开来、顾此失彼、哭笑不得、举足轻重、不相上下、悲喜交加、软硬兼施、文武双全、雅俗共赏、喜怒哀乐、恩怨分明、否极泰来、祸福相依、黑白分明、功败垂成、新陈代谢、盛衰荣辱、似是而非、此起彼伏、争先恐后、坐立不安、动静皆宜、以静制动、一动不如一静、大惊小怪、小题大做、大同小异、因小失大、大材小用、无中生有、有始无终、有勇无谋、有名无实、有眼无珠、有备无患、有恃无恐、得失参半、得不偿失、死里逃生、东张西望、左顾右盼、南辕北辙、前赴后继、里应外合、声东击西、上天入地、内忧外患、朝秦暮楚、朝令夕改、古为今用、今非昔比、早出晚归、昼伏夜出",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 5,
|
||||
"Name": "请写出含有反义词的四字成语。",
|
||||
"Answer": "深入浅出、喜怒无常、厚此薄彼、眼高手低、头重脚轻、继往开来、顾此失彼、哭笑不得、举足轻重、不相上下、悲喜交加、软硬兼施、文武双全、雅俗共赏、喜怒哀乐、恩怨分明、否极泰来、祸福相依、黑白分明、功败垂成、新陈代谢、盛衰荣辱、似是而非、此起彼伏、争先恐后、坐立不安、动静皆宜、以静制动、一动不如一静、大惊小怪、小题大做、大同小异、因小失大、大材小用、无中生有、有始无终、有勇无谋、有名无实、有眼无珠、有备无患、有恃无恐、得失参半、得不偿失、死里逃生、东张西望、左顾右盼、南辕北辙、前赴后继、里应外合、声东击西、上天入地、内忧外患、朝秦暮楚、朝令夕改、古为今用、今非昔比、早出晚归、昼伏夜出",
|
||||
"Type": "text",
|
||||
"IsGood": 1,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 5,
|
||||
"Name": "请写出含有反义词的四字成语。",
|
||||
"Answer": "深入浅出、喜怒无常、厚此薄彼、眼高手低、头重脚轻、继往开来、顾此失彼、哭笑不得、举足轻重、不相上下、悲喜交加、软硬兼施、文武双全、雅俗共赏、喜怒哀乐、恩怨分明、否极泰来、祸福相依、黑白分明、功败垂成、新陈代谢、盛衰荣辱、似是而非、此起彼伏、争先恐后、坐立不安、动静皆宜、以静制动、一动不如一静、大惊小怪、小题大做、大同小异、因小失大、大材小用、无中生有、有始无终、有勇无谋、有名无实、有眼无珠、有备无患、有恃无恐、得失参半、得不偿失、死里逃生、东张西望、左顾右盼、南辕北辙、前赴后继、里应外合、声东击西、上天入地、内忧外患、朝秦暮楚、朝令夕改、古为今用、今非昔比、早出晚归、昼伏夜出",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 5,
|
||||
"Name": "请写出含有反义词的四字成语。",
|
||||
"Answer": "深入浅出、喜怒无常、厚此薄彼、眼高手低、头重脚轻、继往开来、顾此失彼、哭笑不得、举足轻重、不相上下、悲喜交加、软硬兼施、文武双全、雅俗共赏、喜怒哀乐、恩怨分明、否极泰来、祸福相依、黑白分明、功败垂成、新陈代谢、盛衰荣辱、似是而非、此起彼伏、争先恐后、坐立不安、动静皆宜、以静制动、一动不如一静、大惊小怪、小题大做、大同小异、因小失大、大材小用、无中生有、有始无终、有勇无谋、有名无实、有眼无珠、有备无患、有恃无恐、得失参半、得不偿失、死里逃生、东张西望、左顾右盼、南辕北辙、前赴后继、里应外合、声东击西、上天入地、内忧外患、朝秦暮楚、朝令夕改、古为今用、今非昔比、早出晚归、昼伏夜出",
|
||||
"Type": "text",
|
||||
"IsGood": 1,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 5,
|
||||
"Name": "请写出含有反义词的四字成语。",
|
||||
"Answer": "深入浅出、喜怒无常、厚此薄彼、眼高手低、头重脚轻、继往开来、顾此失彼、哭笑不得、举足轻重、不相上下、悲喜交加、软硬兼施、文武双全、雅俗共赏、喜怒哀乐、恩怨分明、否极泰来、祸福相依、黑白分明、功败垂成、新陈代谢、盛衰荣辱、似是而非、此起彼伏、争先恐后、坐立不安、动静皆宜、以静制动、一动不如一静、大惊小怪、小题大做、大同小异、因小失大、大材小用、无中生有、有始无终、有勇无谋、有名无实、有眼无珠、有备无患、有恃无恐、得失参半、得不偿失、死里逃生、东张西望、左顾右盼、南辕北辙、前赴后继、里应外合、声东击西、上天入地、内忧外患、朝秦暮楚、朝令夕改、古为今用、今非昔比、早出晚归、昼伏夜出",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 5,
|
||||
"Name": "请写出含有反义词的四字成语。",
|
||||
"Answer": "深入浅出、喜怒无常、厚此薄彼、眼高手低、头重脚轻、继往开来、顾此失彼、哭笑不得、举足轻重、不相上下、悲喜交加、软硬兼施、文武双全、雅俗共赏、喜怒哀乐、恩怨分明、否极泰来、祸福相依、黑白分明、功败垂成、新陈代谢、盛衰荣辱、似是而非、此起彼伏、争先恐后、坐立不安、动静皆宜、以静制动、一动不如一静、大惊小怪、小题大做、大同小异、因小失大、大材小用、无中生有、有始无终、有勇无谋、有名无实、有眼无珠、有备无患、有恃无恐、得失参半、得不偿失、死里逃生、东张西望、左顾右盼、南辕北辙、前赴后继、里应外合、声东击西、上天入地、内忧外患、朝秦暮楚、朝令夕改、古为今用、今非昔比、早出晚归、昼伏夜出",
|
||||
"Type": "text",
|
||||
"IsGood": 1,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 5,
|
||||
"Name": "请写出含有反义词的四字成语。",
|
||||
"Answer": "深入浅出、喜怒无常、厚此薄彼、眼高手低、头重脚轻、继往开来、顾此失彼、哭笑不得、举足轻重、不相上下、悲喜交加、软硬兼施、文武双全、雅俗共赏、喜怒哀乐、恩怨分明、否极泰来、祸福相依、黑白分明、功败垂成、新陈代谢、盛衰荣辱、似是而非、此起彼伏、争先恐后、坐立不安、动静皆宜、以静制动、一动不如一静、大惊小怪、小题大做、大同小异、因小失大、大材小用、无中生有、有始无终、有勇无谋、有名无实、有眼无珠、有备无患、有恃无恐、得失参半、得不偿失、死里逃生、东张西望、左顾右盼、南辕北辙、前赴后继、里应外合、声东击西、上天入地、内忧外患、朝秦暮楚、朝令夕改、古为今用、今非昔比、早出晚归、昼伏夜出",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 5,
|
||||
"Name": "请写出含有反义词的四字成语。",
|
||||
"Answer": "深入浅出、喜怒无常、厚此薄彼、眼高手低、头重脚轻、继往开来、顾此失彼、哭笑不得、举足轻重、不相上下、悲喜交加、软硬兼施、文武双全、雅俗共赏、喜怒哀乐、恩怨分明、否极泰来、祸福相依、黑白分明、功败垂成、新陈代谢、盛衰荣辱、似是而非、此起彼伏、争先恐后、坐立不安、动静皆宜、以静制动、一动不如一静、大惊小怪、小题大做、大同小异、因小失大、大材小用、无中生有、有始无终、有勇无谋、有名无实、有眼无珠、有备无患、有恃无恐、得失参半、得不偿失、死里逃生、东张西望、左顾右盼、南辕北辙、前赴后继、里应外合、声东击西、上天入地、内忧外患、朝秦暮楚、朝令夕改、古为今用、今非昔比、早出晚归、昼伏夜出",
|
||||
"Type": "text",
|
||||
"IsGood": 1,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 5,
|
||||
"Name": "请写出含有反义词的四字成语。",
|
||||
"Answer": "深入浅出、喜怒无常、厚此薄彼、眼高手低、头重脚轻、继往开来、顾此失彼、哭笑不得、举足轻重、不相上下、悲喜交加、软硬兼施、文武双全、雅俗共赏、喜怒哀乐、恩怨分明、否极泰来、祸福相依、黑白分明、功败垂成、新陈代谢、盛衰荣辱、似是而非、此起彼伏、争先恐后、坐立不安、动静皆宜、以静制动、一动不如一静、大惊小怪、小题大做、大同小异、因小失大、大材小用、无中生有、有始无终、有勇无谋、有名无实、有眼无珠、有备无患、有恃无恐、得失参半、得不偿失、死里逃生、东张西望、左顾右盼、南辕北辙、前赴后继、里应外合、声东击西、上天入地、内忧外患、朝秦暮楚、朝令夕改、古为今用、今非昔比、早出晚归、昼伏夜出",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 5,
|
||||
"Name": "请写出含有反义词的四字成语。",
|
||||
"Answer": "深入浅出、喜怒无常、厚此薄彼、眼高手低、头重脚轻、继往开来、顾此失彼、哭笑不得、举足轻重、不相上下、悲喜交加、软硬兼施、文武双全、雅俗共赏、喜怒哀乐、恩怨分明、否极泰来、祸福相依、黑白分明、功败垂成、新陈代谢、盛衰荣辱、似是而非、此起彼伏、争先恐后、坐立不安、动静皆宜、以静制动、一动不如一静、大惊小怪、小题大做、大同小异、因小失大、大材小用、无中生有、有始无终、有勇无谋、有名无实、有眼无珠、有备无患、有恃无恐、得失参半、得不偿失、死里逃生、东张西望、左顾右盼、南辕北辙、前赴后继、里应外合、声东击西、上天入地、内忧外患、朝秦暮楚、朝令夕改、古为今用、今非昔比、早出晚归、昼伏夜出",
|
||||
"Type": "text",
|
||||
"IsGood": 1,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 5,
|
||||
"Name": "请写出含有反义词的四字成语。",
|
||||
"Answer": "深入浅出、喜怒无常、厚此薄彼、眼高手低、头重脚轻、继往开来、顾此失彼、哭笑不得、举足轻重、不相上下、悲喜交加、软硬兼施、文武双全、雅俗共赏、喜怒哀乐、恩怨分明、否极泰来、祸福相依、黑白分明、功败垂成、新陈代谢、盛衰荣辱、似是而非、此起彼伏、争先恐后、坐立不安、动静皆宜、以静制动、一动不如一静、大惊小怪、小题大做、大同小异、因小失大、大材小用、无中生有、有始无终、有勇无谋、有名无实、有眼无珠、有备无患、有恃无恐、得失参半、得不偿失、死里逃生、东张西望、左顾右盼、南辕北辙、前赴后继、里应外合、声东击西、上天入地、内忧外患、朝秦暮楚、朝令夕改、古为今用、今非昔比、早出晚归、昼伏夜出",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 5,
|
||||
"Name": "请写出含有反义词的四字成语。",
|
||||
"Answer": "深入浅出、喜怒无常、厚此薄彼、眼高手低、头重脚轻、继往开来、顾此失彼、哭笑不得、举足轻重、不相上下、悲喜交加、软硬兼施、文武双全、雅俗共赏、喜怒哀乐、恩怨分明、否极泰来、祸福相依、黑白分明、功败垂成、新陈代谢、盛衰荣辱、似是而非、此起彼伏、争先恐后、坐立不安、动静皆宜、以静制动、一动不如一静、大惊小怪、小题大做、大同小异、因小失大、大材小用、无中生有、有始无终、有勇无谋、有名无实、有眼无珠、有备无患、有恃无恐、得失参半、得不偿失、死里逃生、东张西望、左顾右盼、南辕北辙、前赴后继、里应外合、声东击西、上天入地、内忧外患、朝秦暮楚、朝令夕改、古为今用、今非昔比、早出晚归、昼伏夜出",
|
||||
"Type": "text",
|
||||
"IsGood": 1,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 5,
|
||||
"Name": "请写出含有反义词的四字成语。",
|
||||
"Answer": "深入浅出、喜怒无常、厚此薄彼、眼高手低、头重脚轻、继往开来、顾此失彼、哭笑不得、举足轻重、不相上下、悲喜交加、软硬兼施、文武双全、雅俗共赏、喜怒哀乐、恩怨分明、否极泰来、祸福相依、黑白分明、功败垂成、新陈代谢、盛衰荣辱、似是而非、此起彼伏、争先恐后、坐立不安、动静皆宜、以静制动、一动不如一静、大惊小怪、小题大做、大同小异、因小失大、大材小用、无中生有、有始无终、有勇无谋、有名无实、有眼无珠、有备无患、有恃无恐、得失参半、得不偿失、死里逃生、东张西望、左顾右盼、南辕北辙、前赴后继、里应外合、声东击西、上天入地、内忧外患、朝秦暮楚、朝令夕改、古为今用、今非昔比、早出晚归、昼伏夜出",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 5,
|
||||
"Name": "请写出含有反义词的四字成语。",
|
||||
"Answer": "深入浅出、喜怒无常、厚此薄彼、眼高手低、头重脚轻、继往开来、顾此失彼、哭笑不得、举足轻重、不相上下、悲喜交加、软硬兼施、文武双全、雅俗共赏、喜怒哀乐、恩怨分明、否极泰来、祸福相依、黑白分明、功败垂成、新陈代谢、盛衰荣辱、似是而非、此起彼伏、争先恐后、坐立不安、动静皆宜、以静制动、一动不如一静、大惊小怪、小题大做、大同小异、因小失大、大材小用、无中生有、有始无终、有勇无谋、有名无实、有眼无珠、有备无患、有恃无恐、得失参半、得不偿失、死里逃生、东张西望、左顾右盼、南辕北辙、前赴后继、里应外合、声东击西、上天入地、内忧外患、朝秦暮楚、朝令夕改、古为今用、今非昔比、早出晚归、昼伏夜出",
|
||||
"Type": "text",
|
||||
"IsGood": 1,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 5,
|
||||
"Name": "请写出含有反义词的四字成语。",
|
||||
"Answer": "深入浅出、喜怒无常、厚此薄彼、眼高手低、头重脚轻、继往开来、顾此失彼、哭笑不得、举足轻重、不相上下、悲喜交加、软硬兼施、文武双全、雅俗共赏、喜怒哀乐、恩怨分明、否极泰来、祸福相依、黑白分明、功败垂成、新陈代谢、盛衰荣辱、似是而非、此起彼伏、争先恐后、坐立不安、动静皆宜、以静制动、一动不如一静、大惊小怪、小题大做、大同小异、因小失大、大材小用、无中生有、有始无终、有勇无谋、有名无实、有眼无珠、有备无患、有恃无恐、得失参半、得不偿失、死里逃生、东张西望、左顾右盼、南辕北辙、前赴后继、里应外合、声东击西、上天入地、内忧外患、朝秦暮楚、朝令夕改、古为今用、今非昔比、早出晚归、昼伏夜出",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 5,
|
||||
"Name": "请写出含有反义词的四字成语。",
|
||||
"Answer": "深入浅出、喜怒无常、厚此薄彼、眼高手低、头重脚轻、继往开来、顾此失彼、哭笑不得、举足轻重、不相上下、悲喜交加、软硬兼施、文武双全、雅俗共赏、喜怒哀乐、恩怨分明、否极泰来、祸福相依、黑白分明、功败垂成、新陈代谢、盛衰荣辱、似是而非、此起彼伏、争先恐后、坐立不安、动静皆宜、以静制动、一动不如一静、大惊小怪、小题大做、大同小异、因小失大、大材小用、无中生有、有始无终、有勇无谋、有名无实、有眼无珠、有备无患、有恃无恐、得失参半、得不偿失、死里逃生、东张西望、左顾右盼、南辕北辙、前赴后继、里应外合、声东击西、上天入地、内忧外患、朝秦暮楚、朝令夕改、古为今用、今非昔比、早出晚归、昼伏夜出",
|
||||
"Type": "text",
|
||||
"IsGood": 1,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 5,
|
||||
"Name": "请写出含有反义词的四字成语。",
|
||||
"Answer": "深入浅出、喜怒无常、厚此薄彼、眼高手低、头重脚轻、继往开来、顾此失彼、哭笑不得、举足轻重、不相上下、悲喜交加、软硬兼施、文武双全、雅俗共赏、喜怒哀乐、恩怨分明、否极泰来、祸福相依、黑白分明、功败垂成、新陈代谢、盛衰荣辱、似是而非、此起彼伏、争先恐后、坐立不安、动静皆宜、以静制动、一动不如一静、大惊小怪、小题大做、大同小异、因小失大、大材小用、无中生有、有始无终、有勇无谋、有名无实、有眼无珠、有备无患、有恃无恐、得失参半、得不偿失、死里逃生、东张西望、左顾右盼、南辕北辙、前赴后继、里应外合、声东击西、上天入地、内忧外患、朝秦暮楚、朝令夕改、古为今用、今非昔比、早出晚归、昼伏夜出",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 5,
|
||||
"Name": "请写出含有反义词的四字成语。",
|
||||
"Answer": "深入浅出、喜怒无常、厚此薄彼、眼高手低、头重脚轻、继往开来、顾此失彼、哭笑不得、举足轻重、不相上下、悲喜交加、软硬兼施、文武双全、雅俗共赏、喜怒哀乐、恩怨分明、否极泰来、祸福相依、黑白分明、功败垂成、新陈代谢、盛衰荣辱、似是而非、此起彼伏、争先恐后、坐立不安、动静皆宜、以静制动、一动不如一静、大惊小怪、小题大做、大同小异、因小失大、大材小用、无中生有、有始无终、有勇无谋、有名无实、有眼无珠、有备无患、有恃无恐、得失参半、得不偿失、死里逃生、东张西望、左顾右盼、南辕北辙、前赴后继、里应外合、声东击西、上天入地、内忧外患、朝秦暮楚、朝令夕改、古为今用、今非昔比、早出晚归、昼伏夜出",
|
||||
"Type": "text",
|
||||
"IsGood": 1,
|
||||
"ImageUrl": ""
|
||||
}
|
||||
]
|
||||
}
|
||||
108
apps/question-importer/store/成语写一写 1.json
Normal file
@ -0,0 +1,108 @@
|
||||
{
|
||||
"question_bank": [
|
||||
{
|
||||
"QuestionId": 5,
|
||||
"Name": "表示团结的四字成语",
|
||||
"Answer": "万众一心、众志成城、精诚团结、风雨同舟、患难与共、群策群力、和衷共济、同舟共济、齐心协力、守望相助……",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 5,
|
||||
"Name": "含有“足”的四字成语",
|
||||
"Answer": "美中不足、捷足先登、足不出户、酒足饭饱、无足轻重、心满意足、画蛇添足、手足无措、足智多谋、不足挂齿……",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 5,
|
||||
"Name": "含有“语”和“言”两个字的四字成语",
|
||||
"Answer": "不言不语、只言片语、三言两语、千言万语、豪言壮语、少言寡语、自言自语、甜言蜜语、花言巧语、风言风语……",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 5,
|
||||
"Name": "表示关系好的四字成语",
|
||||
"Answer": "形影不离、情同手足、亲密无间、莫逆之交、刎颈之交、肝胆照照、八拜之交、情深似海、如胶似漆、深情厚谊……",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 5,
|
||||
"Name": "含有“马”的四字成语",
|
||||
"Answer": "害群之马、车水马龙、万马齐喑、兵荒马乱、马马虎虎、人仰马翻、走马观花、马到成功、千军万马、单枪匹马……",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 5,
|
||||
"Name": "含有“安”的四字成语",
|
||||
"Answer": "随遇而安、安居乐业、安身立命、一路平安、国泰民安、惴惴不安、局促不安、坐卧不安、忐忑不安、安然无恙……",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 5,
|
||||
"Name": "表示学习刻苦的四字成语",
|
||||
"Answer": "废寝忘食、勤学苦练、闻鸡起舞、牛角挂书、凿壁偷光、焚膏继晷、囊萤映雪、韦编三绝、孜孜不倦、悬梁刺股……",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 5,
|
||||
"Name": "表示看的四字成语",
|
||||
"Answer": "东张西望、察言观色、走马观花、左顾右盼、侧目而视、目不转睛、极目远眺、目不暇接、一目十行、探头探脑……",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 5,
|
||||
"Name": "含有两种颜色的四字成语",
|
||||
"Answer": "姹紫嫣红、万紫千红、金碧辉煌、桃红柳绿、黑白分明、青山绿水、唇红齿白、青出于蓝、青黄不接、白纸黑字……",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 5,
|
||||
"Name": "表示珍贵的四字成语",
|
||||
"Answer": "无价之宝、奇珍异宝、凤毛麟角、绝无仅有、价值连城、和璧隋珠、金玉良言、沧海遗珠、千金难买、吉光片羽……",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 5,
|
||||
"Name": "含有“星”的四字成语",
|
||||
"Answer": "星星点点、众星拱月、月明星稀、吉星高照、披星戴月、星光灿烂、星罗棋布、星月交辉、斗转星移、大步流星……",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 5,
|
||||
"Name": "含有“风”和“雨”两个字的四字成语",
|
||||
"Answer": "风雨同舟、春风化雨、和风细雨、呼风唤雨、狂风暴雨、血雨腥风、凄风苦雨、风雨无阻、风雨交加、风吹雨打……",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 5,
|
||||
"Name": "表示不安的四字成语",
|
||||
"Answer": "心惊肉跳、忐忑不安、坐立不安、惊慌失措、胆战心惊、诚惶诚恐、惊弓之鸟、七上八下、如坐针毡、提心吊胆……",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
}
|
||||
]
|
||||
}
|
||||
44
apps/question-importer/store/换字组成语.json
Normal file
@ -0,0 +1,44 @@
|
||||
{
|
||||
"question_bank": [
|
||||
{
|
||||
"QuestionId": 35,
|
||||
"Name": "不足为奇",
|
||||
"Answer": "不足为怪、不足为虑、不足为凭、不足为训、不以为奇、不足为据",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 35,
|
||||
"Name": "不以为然",
|
||||
"Answer": "不以为耻、不以为意、不以为怪、不以为奇、不以为异、信以为然",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 35,
|
||||
"Name": "一无所长",
|
||||
"Answer": "一无所获、一无所成、一无所得、一无所好、一无所见、一无所求、一无所能、一无所取、一无所有、一无所知、别无所长",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 35,
|
||||
"Name": "舍己为人",
|
||||
"Answer": "舍己为公、舍己成人、舍己从人、舍己救人、舍己耘人",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 35,
|
||||
"Name": "百无一是",
|
||||
"Answer": "百无一失、百无一用、百无一漏、百无一能、百无一误",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
}
|
||||
]
|
||||
}
|
||||
@ -2,8 +2,16 @@
|
||||
"question_bank": [
|
||||
{
|
||||
"QuestionId": 2,
|
||||
"Name": "车",
|
||||
"Answer": "辆、轼、转、软、轮、辐、输、轨、轩、轻、轺、辐、轴、轷、轱、辊、辎、轺、轸、辋、轳、轼、辘、辔、斩、连、阵、军、轰、库、辗、载、辈、晕、轳",
|
||||
"Name": "日",
|
||||
"Answer": "时、间、最、早、晨、易、显、阳、香、晚、星、竟、春、景、莫、旧、暗、晓、替、暖……",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 2,
|
||||
"Name": "王",
|
||||
"Answer": "玉、瑶、瑞、玩、球、玲、珀、珍、环、理、珊、瑚、班、现、瑰、玻、璃、玫、琳、琐……",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
@ -11,95 +19,23 @@
|
||||
{
|
||||
"QuestionId": 2,
|
||||
"Name": "木",
|
||||
"Answer": "林、森、树、枝、柱、板、柜、桌、椅、楼、桥、村、材、松、柏、杨、柳、梅、李、杏、桃、梨、棋、格、栋、梁、架、根、植、森、杉、枯、朽、荣、荣、相、查、样、标、校、核、桃、根、株、椅、架、械、植、棚、橙",
|
||||
"Type": "text",
|
||||
"IsGood": 1,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 2,
|
||||
"Name": "水",
|
||||
"Answer": "冰、泉、泵、尿、沓、沝、淼、氼、沝、沯、沝、沯、沀、汆、氽、汞、沗、沓、汖、沯、沊、沝、沯、氼、沝、沓、沯、泵、沓、沗、沯、氼、沝、沓、沯、氼、沝、沓、沯、氼、沝、沓",
|
||||
"Answer": "本、相、样、机、林、极、李、根、格、术、集、查、树、权、案、模、采、楼、标、板……",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 2,
|
||||
"Name": "火",
|
||||
"Answer": "炎、焱、燚、灭、灰、灯、灶、灿、灼、灾、灵、灸、炒、炊、炕、炉、炖、炙、炬、炮、炸、烤、烧、烟、烫、烽、焰、焚、煤、煌、煲、熨、燎、燃、燥、爆、烁、炉、炊、炕、灶",
|
||||
"Type": "text",
|
||||
"IsGood": 1,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 2,
|
||||
"Name": "口",
|
||||
"Answer": "品、吕、回、日、田、申、甲、由、电、里、困、围、囚、图、圆、国、固、因、团、园、图、园、困、圆、囡、因、围、囟、囝、回、囧、囹、固、图、囿、圃、圄、圉、圈、圜、圆、园、围、困、图、国、园",
|
||||
"Name": "土",
|
||||
"Answer": "在、地、至、场、城、社、块、境、基、堂、坚、压、坏、增、庄、幸、圣、坛、墙、塞……",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 2,
|
||||
"Name": "日",
|
||||
"Answer": "旦、早、旭、旮、旯、时、旷、旺、昨、昭、映、昧、是、显、星、春、昧、晓、晃、晌、晷、晨、晚、晾、晴、晶、晸、暑、暄、暗、暖、暇、暝、暴、暮、暾、曛、曜、曝、曦、曩、日",
|
||||
"Type": "text",
|
||||
"IsGood": 1,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 2,
|
||||
"Name": "月",
|
||||
"Answer": "朋、明、阴、朝、朗、期、朦、胧、肤、肥、服、胡、有、背、胃、胆、肝、肚、肠、肺、肢、肿、胀、腰、脚、腿、膀、臂、膝、脑、胖、脸、脐、胜、脉、胸、脊、育、背、胡",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 2,
|
||||
"Name": "心",
|
||||
"Answer": "必、志、忍、忌、忘、闷、忐、忑、忠、念、忽、思、怠、怎、怨、急、总、恶、恩、息、恳、恁、恋、恐、恕、悲、慈、意、感、想、愈、愿、慧、慰、憋、憨、憩、懋、懿、忒、忐、忑",
|
||||
"Type": "text",
|
||||
"IsGood": 1,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 2,
|
||||
"Name": "手",
|
||||
"Answer": "拜、掰、拿、拳、掌、掰、掱、摩、摹、擎、攀、挚、挛、挚、挲、撵、撅、撷、撺、擀、擘、擂、擞、攒、攉、攫、攥、攴、攵、收、改、攻、放、政、故、效、敏、救、教、败、敌、救",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 2,
|
||||
"Name": "人",
|
||||
"Answer": "从、众、今、介、以、令、全、会、合、企、余、伞、命、舍、拿、盒、盆、盒、拿、龛、介、仓、个、仄、以、令、全、会、企、众、从、介、以、令、全、会、合、企、余、伞、命",
|
||||
"Type": "text",
|
||||
"IsGood": 1,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 2,
|
||||
"Name": "言",
|
||||
"Answer": "信、誓、警、誉、詹、計、討、訓、記、訪、評、註、証、詠、試、詩、話、誠、誼、誤、說、読、課、調、談、請、論、諭、諦、諮、諸、諾、謀、謁、謂、謄、謎、謙、講、謝、謠、謬、謹、識、譜、議、護、譽、變",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 2,
|
||||
"Name": "金",
|
||||
"Answer": "鑫、针、钉、钏、钓、钒、钗、钙、钚、钛、钝、钞、钟、钢、钤、钥、钦、钧、钩、钫、钬、钯、钮、钰、钱、钳、钻、钿、钾、铀、铁、铂、铃、铅、铆、铊、铋、铌、铍、铎、铐、铑、铒、铕、铗、铘、铙、铚、铛",
|
||||
"Type": "text",
|
||||
"IsGood": 1,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 2,
|
||||
"Name": "石",
|
||||
"Answer": "岩、矿、码、砂、研、砖、砌、砍、泵、硬、破、砸、础、硅、硕、确、碑、碗、碟、碾、磕、磁、磅、磨、磷、磺、礁、础、碣、碲、碴、碹、碳、碣、磬、磲、磴、磷、磺、礁",
|
||||
"Answer": "码、砍、硬、磅、研、硕、岩、破、碗、碧、碰、碌、砸、矿、砖、碟、砚、确、磨、碎……",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
@ -107,63 +43,15 @@
|
||||
{
|
||||
"QuestionId": 2,
|
||||
"Name": "山",
|
||||
"Answer": "岁、岭、岩、岳、岸、峰、峡、峻、崇、崎、崖、岗、崩、崭、嵌、嵘、崽、巅、巍、岚、岔、岖、岈、岘、岙、岑、岔、岗、岵、岷、岽、岿、峁、峄、峋、峥、峦、峙、峡、峤、峦",
|
||||
"Type": "text",
|
||||
"IsGood": 1,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 2,
|
||||
"Name": "土",
|
||||
"Answer": "圭、垚、尘、地、场、址、块、坐、垃、坡、坦、坤、坻、坯、坪、坳、坷、坩、坫、坭、坳、垆、垌、垍、垓、垠、垩、垭、垯、垲、垴、垸、埂、埋、城、埔、域、埏、埕、埘、埙、埚、埝、埤、埭、埯、埸、培、基",
|
||||
"Answer": "岁、岸、峭、峰、峡、岭、巅、崇、岳、崛、峦、崩、崭、岗、炭、崎、岖、峨、崖、峻……",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 2,
|
||||
"Name": "马",
|
||||
"Answer": "冯、驭、驮、驯、驰、驱、驳、驴、驶、驷、驸、驹、驻、驼、驿、驽、驾、骂、骁、骄、骆、骇、骈、骊、骋、验、骏、骐、骑、骒、骓、骖、骗、骚、骛、骜、骝、骞、骟、骠、骡、骢、骣、骤、骥、骧、骊",
|
||||
"Type": "text",
|
||||
"IsGood": 1,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 2,
|
||||
"Name": "鸟",
|
||||
"Answer": "鸡、鸣、鸥、鸦、鸭、鸯、鸳、鸽、鸾、鸿、鹃、鹅、鹑、鹉、鹊、鹋、鹛、鹜、鹞、鹣、鹤、鹦、鹬、鹰、鹭、鹳、鹬、鸤、鸧、鸨、鸩、鸪、鸫、鸬、鸭、鸮、鸯、鸰、鸱、鸲、鸴、鸵、鸶、鸷、鸸、鸹、鸺、鸼、鸽",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 2,
|
||||
"Name": "鱼",
|
||||
"Answer": "鱻、渔、鲁、鲂、鲅、鲍、鲈、鲇、鲋、鲎、鲐、鲑、鲒、鲔、鲕、鲚、鲛、鲜、鲞、鲟、鲠、鲤、鲥、鲦、鲧、鲨、鲩、鲫、鲭、鲮、鲰、鲱、鲲、鲳、鲵、鲶、鲷、鲺、鲻、鲽、鲾、鳀、鳁、鳂、鳃、鳄、鳅、鳆、鳇",
|
||||
"Type": "text",
|
||||
"IsGood": 1,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 2,
|
||||
"Name": "虫",
|
||||
"Answer": "虬、虮、虱、虹、虾、蚁、蚂、蚕、蛊、蛄、蛆、蛇、蛉、蛋、蛎、蛏、蛐、蛑、蛓、蛔、蛙、蛛、蛞、蛟、蛩、蛭、蛮、蛱、蛲、蛳、蛴、蛸、蛹、蛺、蛾、蜂、蜃、蜇、蜈、蜉、蜊、蜍、蜒、蜓、蜕、蜗、蜘、蜜",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 2,
|
||||
"Name": "竹",
|
||||
"Answer": "竿、竽、笃、笄、笆、笈、笋、笊、笏、笕、笔、笑、笤、笥、符、笨、笪、笫、第、笮、笱、笳、笸、笺、笼、笾、筇、筌、筎、筘、筚、筛、筜、筝、筠、筢、筮、筱、筲、筵、筷、筹、筻、签、简、箐、箜、箐、箓",
|
||||
"Type": "text",
|
||||
"IsGood": 1,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 2,
|
||||
"Name": "禾",
|
||||
"Answer": "利、秃、秀、私、秉、秆、秄、秈、秕、种、科、秒、秭、秣、秤、秦、秧、秩、租、秫、秸、秽、移、税、稚、稠、稂、稃、程、稆、稍、稔、稗、稞、稟、稠、稳、稷、稻、稼、稽、稿、穆、穑、穗、穰、穸、穻",
|
||||
"Name": "穴",
|
||||
"Answer": "空、究、突、穿、窗、穷、窝、窃、帘、窄、窜、窟、窥、窍、窘、窑、窖、穹、窈、窕……",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
@ -171,127 +59,23 @@
|
||||
{
|
||||
"QuestionId": 2,
|
||||
"Name": "米",
|
||||
"Answer": "类、籽、粉、粒、粕、粗、粘、粟、粜、粝、粞、粳、粢、粤、粥、粲、粱、粮、粹、精、粽、糊、糁、糅、糕、糖、糙、糜、糗、糟、糠、糯、糨、糁、糇、糈、糌、糍、糈、糍、糌、糍",
|
||||
"Type": "text",
|
||||
"IsGood": 1,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 2,
|
||||
"Name": "纟",
|
||||
"Answer": "纠、红、纤、纡、约、级、纨、纪、纫、纬、纭、纯、纰、纱、纲、纳、纵、纶、纷、纸、纹、纺、纻、纽、纾、线、绀、绁、绂、练、组、绅、细、织、终、绉、绊、绋、绌、绍、绎、经、绐、绑、绒、结、绔、绕",
|
||||
"Answer": "精、断、类、粪、料、继、迷、糊、粗、奥、粉、粮、粒、糟、糖、粘、糕、粹、鞠、粥……",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 2,
|
||||
"Name": "贝",
|
||||
"Answer": "贞、负、贡、财、责、贤、败、账、货、质、贩、贪、贫、贬、购、贮、贯、贰、贱、贲、贵、贶、贷、贸、费、贺、贻、贼、贽、贾、贿、贳、赁、赂、赃、资、赅、赆、赇、赈、赉、赊、赋、赌、赎、赏、赐、赑、赒",
|
||||
"Type": "text",
|
||||
"IsGood": 1,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 2,
|
||||
"Name": "王",
|
||||
"Answer": "玉、全、主、弄、玌、玎、玑、玕、玖、玛、玟、玢、环、玩、玮、玲、玳、玷、玻、珊、珍、珑、珈、珉、玻、珠、珐、珙、珞、珥、珧、珩、珲、珺、琀、琊、琏、琐、琚、琛、琨、琬、琮、琰、琯、琳、琴、琵",
|
||||
"Name": "虫",
|
||||
"Answer": "蜜、蜂、蚯、蚓、蝴、蝶、蜻、蜓、虽、独、蝌、蚪、蜘、蛛、虾、蚊、蛇、蚕、蜀、虹……",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 2,
|
||||
"Name": "走",
|
||||
"Answer": "赴、赵、赶、起、趁、趋、超、越、趄、趔、趑、趣、趟、趠、趡、趤、趦、趪、趫、趬、趭、趮、趯、趱、赶、起、越、超、趋、趁、趣、趟、趔、趑、趠、趡、趤、趦、趪、趫、趬、趭、趮、趯、趱",
|
||||
"Type": "text",
|
||||
"IsGood": 1,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 2,
|
||||
"Name": "足",
|
||||
"Answer": "趴、趵、趸、趿、跃、跄、跆、跋、跌、跎、跑、跖、跚、跛、距、跣、跨、跪、路、跳、践、跶、跷、跸、跹、跺、跻、跽、踅、踉、踊、踌、踏、踔、踝、踞、踟、踣、踦、踧、踱、踵、踶、踹、踺、踽、蹀、蹁",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 2,
|
||||
"Name": "页",
|
||||
"Answer": "顶、顷、顸、项、顺、须、顼、顽、顾、顿、颁、颂、颃、预、颅、领、颈、颉、颊、颋、颌、颍、颎、颏、颐、频、颓、颔、颖、颗、题、颙、颚、颛、颜、额、颞、颟、颠、颡、颢、颤、颥、颦、颧、顸、项",
|
||||
"Type": "text",
|
||||
"IsGood": 1,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 2,
|
||||
"Name": "酉",
|
||||
"Answer": "酒、配、酊、酋、酌、酎、酏、酐、酑、酒、酓、酕、酖、酗、酙、酚、酝、酞、酡、酢、酣、酤、酥、酬、酪、酮、酯、酰、酱、酲、酴、酵、酶、酷、酸、酹、酺、酽、酾、酿、醁、醅、醇、醉、醋、醌、醍、醐",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 2,
|
||||
"Name": "艹",
|
||||
"Answer": "艺、艾、节、芋、芍、芒、芝、芄、芑、芗、芎、芋、芌、芏、芐、芑、芊、芕、芗、芘、芙、芜、芝、芟、芡、芣、芤、芥、芦、芩、芪、芫、芬、芭、芮、芯、芰、花、芳、芷、芸、芹、芺、芽、苇、苋、苌、苍",
|
||||
"Type": "text",
|
||||
"IsGood": 1,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 2,
|
||||
"Name": "宀",
|
||||
"Answer": "字、安、宋、完、宏、牢、灾、宝、宗、定、宕、宠、宜、审、官、宛、实、宓、宣、宦、室、宫、宪、客、害、宽、家、宵、宴、宾、宰、案、容、宿、寂、寄、密、寇、富、寐、寒、寓、寞、寝、寤、寥、察、寡、寮",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 2,
|
||||
"Name": "阝(左)",
|
||||
"Answer": "队、阡、阪、阮、阱、防、阳、阴、阶、阻、阿、陀、陂、附、际、陆、陇、陈、陉、陕、降、限、陡、院、除、险、陪、陵、陶、陷、隍、隘、隙、障、隧、隗、隰、隳、陇、陈、陂、陉、陕、陇、陔、陖、陗、陘、陙",
|
||||
"Type": "text",
|
||||
"IsGood": 1,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 2,
|
||||
"Name": "阝(右)",
|
||||
"Answer": "邓、邗、邛、邝、邡、邢、邬、邰、邱、邳、邴、邵、邶、邸、邹、邺、邻、郏、郅、郇、郓、郕、郗、郜、郝、郡、郢、郦、郫、郭、郯、郴、郸、都、郾、郿、鄄、鄅、鄌、鄑、鄗、鄘、鄚、鄢、鄣、鄯、鄱、鄹",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 2,
|
||||
"Name": "⻊",
|
||||
"Answer": "路、跑、跳、踏、踩、踢、跪、跟、跨、蹦、蹈、蹭、踮、蹲、跃、跚、踉、跷、踌、踝、踞、踣、踧、踱、踵、踶、踹、踺、蹀、蹁、蹂、蹄、蹅、蹇、蹈、蹊、蹉、蹋、蹑、蹒、蹓、蹔、蹕、蹙、蹟、蹠、蹡、蹢",
|
||||
"Type": "text",
|
||||
"IsGood": 1,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 2,
|
||||
"Name": "彳",
|
||||
"Answer": "行、往、征、彼、径、待、徂、徉、很、徇、徕、徒、徐、得、徘、徙、徜、徨、循、微、徳、徴、徯、徭、微、徼、徽、彷、役、彻、佛、征、徂、徉、徊、律、後、徐、徒、得、徘、徙、徕、循、徨、微、徳、徵",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 2,
|
||||
"Name": "犭",
|
||||
"Answer": "犯、犰、犴、犷、犸、犹、狈、狂、狄、狁、狉、狎、狐、狝、狗、狙、狞、狟、狠、狡、狩、独、狭、狮、狯、狰、狱、狲、狳、狴、狺、狼、猁、狻、猃、猇、猓、猕、猖、猗、猘、猛、猜、猝、猞、猡、猢、猥",
|
||||
"Type": "text",
|
||||
"IsGood": 1,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 2,
|
||||
"Name": "⺮",
|
||||
"Answer": "竹、竿、竽、笃、笄、笆、笈、笋、笊、笏、笕、笔、笑、笤、笥、符、笨、笪、笫、第、笮、笱、笳、笸、笺、笼、笾、筇、筌、筎、筘、筚、筛、筜、筝、筠、筢、筮、筱、筲、筵、筷、筹、筻、签、简、箐、箜",
|
||||
"Name": "目",
|
||||
"Answer": "自、着、看、相、算、眼、省、睡、睛、冒、眉、瞧、睁、盼、瞬、眠、盯、瞪、盲、眨……",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
@ -299,170 +83,26 @@
|
||||
{
|
||||
"QuestionId": 2,
|
||||
"Name": "女",
|
||||
"Answer": "奶、奴、奸、她、好、如、妃、妄、妆、妇、妈、妍、妩、妓、妪、妒、妨、妞、妯、妲、妹、妻、妾、姆、始、姓、委、姗、妮、妯、妲、妹、妻、妾、姆、始、姓、委、姗、妮、姚、姜、姝、姣、姨、姻、姿、威",
|
||||
"Type": "text",
|
||||
"IsGood": 1,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 2,
|
||||
"Name": "子",
|
||||
"Answer": "孔、孕、存、孙、孜、孝、孟、季、孤、孢、孩、孺、孛、孥、学、孨、孪、孬、孭、孮、孯、孰、孱、孳、孵、孶、孷、孹、孻、孼、孽、孾、孿、孔、孕、存、孙、孜、孝、孟、季、孤、孢、孩、孺、孛、孥",
|
||||
"Answer": "要、好、如、安、她、始、委、奶、妇、姐、姓、姑、妈、妹、妙、姿、娜、姜、妨、娇……",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 2,
|
||||
"Name": "⻌",
|
||||
"Answer": "边、辽、达、过、迈、迁、迅、迄、巡、进、远、违、连、迟、迢、迤、迥、迦、迨、迪、迭、迮、述、迳、迫、迺、追、逅、适、逃、逄、逈、逋、通、逛、逝、逞、速、造、透、逐、逑、递、逖、逗、逦、逡、週",
|
||||
"Type": "text",
|
||||
"IsGood": 1,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 2,
|
||||
"Name": "⺮",
|
||||
"Answer": "竹、竿、竽、笃、笄、笆、笈、笋、笊、笏、笕、笔、笑、笤、笥、符、笨、笪、笫、第、笮、笱、笳、笸、笺、笼、笾、筇、筌、筎、筘、筚、筛、筜、筝、筠、筢、筮、筱、筲、筵、筷、筹、筻、签、简、箐、箜",
|
||||
"Name": "月",
|
||||
"Answer": "明、服、望、期、朝、脸、脚、背、脑、胡、胜、朋、脱、股、阴、肩、胆、胸、腿、腾……",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 2,
|
||||
"Name": "扌",
|
||||
"Answer": "扎、打、扑、扒、扔、扛、扣、托、执、扩、扫、扬、扶、抚、技、抠、扰、扼、拒、找、批、扯、抄、折、抓、扳、抡、扮、抢、抑、抛、投、抗、抖、护、扭、把、报、拟、抒、抻、抵、抹、抻、押、抽、抿、拂",
|
||||
"Type": "text",
|
||||
"IsGood": 1,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 2,
|
||||
"Name": "氵",
|
||||
"Answer": "汁、汀、汇、汉、污、江、汛、池、汤、汪、沛、沤、沥、沦、汹、沧、沨、沟、没、沏、沔、沙、汽、沃、沂、汹、泛、沧、沩、沪、沉、沈、沁、泐、沫、浅、法、沽、河、沾、泪、沮、油、泱、泳、泞、泻、泼",
|
||||
"Name": "田",
|
||||
"Answer": "思、备、界、留、细、男、雷、略、鱼、累、番、奋、鼻、畔、苗、兽、畏、畜、亩、胃……",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 2,
|
||||
"Name": "忄",
|
||||
"Answer": "忆、忙、忖、忏、忉、忧、忋、快、忓、忔、忕、忡、忤、忪、怅、怆、怊、怍、怏、怑、怗、怙、怛、怕、怫、怦、性、怩、怪、怫、怿、恁、恂、恃、恬、恌、恑、恒、恢、恍、恓、恘、恚、恝、恟、恠、恡、恫",
|
||||
"Type": "text",
|
||||
"IsGood": 1,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 2,
|
||||
"Name": "灬",
|
||||
"Answer": "点、烈、热、烹、焦、然、煎、照、熙、熊、熏、熟、熹、熬、热、熏、熈、熟、熹、熏、燮、爇、爢、爣、爤、爥、爦、爧、爨、爩、点、烈、热、烹、焦、然、煎、照、熙、熊、熏、熟、熹、熬、热、熏",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 2,
|
||||
"Name": "刂",
|
||||
"Answer": "刊、刑、划、刈、刍、创、刚、列、刘、则、删、判、别、刭、刮、到、刳、制、刷、刹、刺、刻、刽、刿、剀、剁、剂、剃、削、剌、前、剐、剑、剔、剖、剥、剧、剩、割、剡、剞、剟、剡、剣、剥、剧、剩、割",
|
||||
"Type": "text",
|
||||
"IsGood": 1,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 2,
|
||||
"Name": "礻",
|
||||
"Answer": "礼、社、祀、祁、祃、祅、祆、祇、祈、祉、祊、祋、祌、祍、祎、祏、祐、祑、祒、祓、祔、祕、祖、祗、祚、祛、祜、祝、神、祟、祠、祢、祥、祷、祸、祺、祼、祾、禄、禅、禊、禋、福、禔、禕、禖、禘、禚",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 2,
|
||||
"Name": "钅",
|
||||
"Answer": "针、钉、钌、钋、钊、钏、钒、钓、钗、钙、钚、钛、钝、钞、钟、钠、钡、钢、钤、钥、钦、钧、钨、钩、钪、钫、钬、钭、钮、钯、钰、钱、钲、钳、钴、钵、钶、钷、钸、钹、钺、钻、钼、钽、钾、钿、铀、铁",
|
||||
"Type": "text",
|
||||
"IsGood": 1,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 2,
|
||||
"Name": "冫",
|
||||
"Answer": "冰、冯、冮、冲、决、冴、冻、况、冷、冶、冹、冺、净、冽、冾、冿、净、凂、凃、凄、凅、准、凇、凉、凊、凋、凌、凍、凓、凔、凕、凖、凗、凘、凚、凛、凝、凞、凟、冰、冯、冮、冲、决、冴、冻、况",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 2,
|
||||
"Name": "疒",
|
||||
"Answer": "疗、疖、疟、疠、疡、疣、疤、疥、疫、疰、疱、疲、疳、疴、疵、疸、疹、疼、疽、疾、痂、痃、痄、病、症、痈、痉、痒、痔、痕、痖、痘、痛、痞、痤、痦、痧、痪、痫、痬、痭、痮、痯、痰、痱、痴、痹、瘁",
|
||||
"Type": "text",
|
||||
"IsGood": 1,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 2,
|
||||
"Name": "衤",
|
||||
"Answer": "补、衩、衫、衬、衱、衲、衽、衿、袂、袄、袆、袈、袋、袍、袢、袜、袤、被、袪、袷、袺、裆、裈、裉、裎、裒、裓、裕、裨、裰、裱、裳、裴、裸、裹、裼、製、裾、褂、褊、褐、褓、褙、褛、褥、褪、褫、褰",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 2,
|
||||
"Name": "饣",
|
||||
"Answer": "饥、饦、饧、饨、饭、饮、饫、饪、饬、饲、饯、饰、饱、饴、饵、饶、饷、饸、饹、饺、饻、饼、饽、饾、饿、馀、馁、馃、馄、馅、馆、馇、馈、馉、馊、馋、馌、馍、馏、馐、馑、馒、馓、馔、馕、饥、饦",
|
||||
"Type": "text",
|
||||
"IsGood": 1,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 2,
|
||||
"Name": "⻏",
|
||||
"Answer": "邦、邪、邨、邬、邴、邵、邰、邳、邱、邶、邸、邹、邺、邻、郏、郅、郇、郓、郕、郗、郜、郝、郢、郦、郫、郭、郯、郴、郸、都、郾、郿、鄄、鄅、鄌、鄑、鄗、鄘、鄚、鄢、鄣、鄯、鄱、鄹、邛、邝",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 2,
|
||||
"Name": "纟",
|
||||
"Answer": "纠、红、纤、纡、约、级、纨、纪、纫、纬、纭、纯、纰、纱、纲、纳、纵、纶、纷、纸、纹、纺、纻、纽、纾、线、绀、绁、绂、练、组、绅、细、织、终、绉、绊、绋、绌、绍、绎、经、绐、绑、绒、结、绔、绕",
|
||||
"Type": "text",
|
||||
"IsGood": 1,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 2,
|
||||
"Name": "罒",
|
||||
"Answer": "罗、罚、罢、罩、罪、置、署、罹、罘、罝、罟、罡、罣、罥、罦、罨、罭、罯、罱、罳、罴、罶、罽、罾、罿、羁、羂、羃、羅、羆、羇、羈、羉、罗、罚、罢、罩、罪、置、署、罹、罘、罝、罟、罡、罣、罥",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 2,
|
||||
"Name": "虍",
|
||||
"Answer": "虎、虏、虐、虑、虔、虚、虞、虢、虣、虤、虥、虦、亏、虩、虪、虎、虏、虐、虑、虔、虚、虞、虢、虣、虤、虥、虦、亏、虩、虪、虎、虏、虐、虑、虔、虚、虞、虢、虣、虤、虥、虦、亏、虩、虪",
|
||||
"Type": "text",
|
||||
"IsGood": 1,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 2,
|
||||
"Name": "辶",
|
||||
"Answer": "边、辽、达、过、迈、迁、迅、迄、巡、进、远、违、连、迟、迢、迤、迥、迦、迨、迪、迭、迮、述、迳、迫、迺、追、逅、适、逃、逄、逈、逋、通、逛、逝、逞、速、造、透、逐、逑、递、逖、逗、逦、逡、週",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 2,
|
||||
"Name": "罒",
|
||||
"Answer": "罗、罚、罢、罩、罪、置、署、罹、罘、罝、罟、罡、罣、罥、罦、罨、罭、罯、罱、罳、罴、罶、罽、罾、罿、羁、羂、羃、羅、羆、羇、羈、羉、罗、罚、罢、罩、罪、置、署、罹、罘、罝、罟、罡、罣、罥",
|
||||
"Type": "text",
|
||||
"IsGood": 1,
|
||||
"ImageUrl": ""
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@ -1,458 +1,204 @@
|
||||
[
|
||||
{
|
||||
"QuestionId": 27,
|
||||
"Name": "liú 表示姓名",
|
||||
"Answer": "刘",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 27,
|
||||
"Name": "zhāng 表示姓氏",
|
||||
"Answer": "张",
|
||||
"Type": "text",
|
||||
"IsGood": 1,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 27,
|
||||
"Name": "wáng 表示姓氏",
|
||||
"Answer": "王",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 27,
|
||||
"Name": "lǐ 表示姓氏",
|
||||
"Answer": "李",
|
||||
"Type": "text",
|
||||
"IsGood": 1,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 27,
|
||||
"Name": "chén 表示姓氏",
|
||||
"Answer": "陈",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 27,
|
||||
"Name": "yáng 表示动物",
|
||||
"Answer": "羊",
|
||||
"Type": "text",
|
||||
"IsGood": 1,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 27,
|
||||
"Name": "mǎ 表示动物",
|
||||
"Answer": "马",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 27,
|
||||
"Name": "niǎo 表示动物",
|
||||
"Answer": "鸟",
|
||||
"Type": "text",
|
||||
"IsGood": 1,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 27,
|
||||
"Name": "yú 表示动物",
|
||||
"Answer": "鱼",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 27,
|
||||
"Name": "gǒu 表示动物",
|
||||
"Answer": "狗",
|
||||
"Type": "text",
|
||||
"IsGood": 1,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 27,
|
||||
"Name": "huā 表示植物",
|
||||
"Answer": "花",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 27,
|
||||
"Name": "shù 表示植物",
|
||||
"Answer": "树",
|
||||
"Type": "text",
|
||||
"IsGood": 1,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 27,
|
||||
"Name": "cǎo 表示植物",
|
||||
"Answer": "草",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 27,
|
||||
"Name": "guǒ 表示植物",
|
||||
"Answer": "果",
|
||||
"Type": "text",
|
||||
"IsGood": 1,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 27,
|
||||
"Name": "yè 表示植物",
|
||||
"Answer": "叶",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 27,
|
||||
"Name": "shuǐ 表示自然元素",
|
||||
"Answer": "水",
|
||||
"Type": "text",
|
||||
"IsGood": 1,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 27,
|
||||
"Name": "huǒ 表示自然元素",
|
||||
"Answer": "火",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 27,
|
||||
"Name": "tǔ 表示自然元素",
|
||||
"Answer": "土",
|
||||
"Type": "text",
|
||||
"IsGood": 1,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 27,
|
||||
"Name": "jīn 表示自然元素",
|
||||
"Answer": "金",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 27,
|
||||
"Name": "mù 表示自然元素",
|
||||
"Answer": "木",
|
||||
"Type": "text",
|
||||
"IsGood": 1,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 27,
|
||||
"Name": "tiān 表示自然",
|
||||
"Answer": "天",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 27,
|
||||
"Name": "dì 表示自然",
|
||||
"Answer": "地",
|
||||
"Type": "text",
|
||||
"IsGood": 1,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 27,
|
||||
"Name": "shān 表示自然",
|
||||
"Answer": "山",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 27,
|
||||
"Name": "chuān 表示自然",
|
||||
"Answer": "川",
|
||||
"Type": "text",
|
||||
"IsGood": 1,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 27,
|
||||
"Name": "hé 表示自然",
|
||||
"Answer": "河",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 27,
|
||||
"Name": "rén 表示人类",
|
||||
"Answer": "人",
|
||||
"Type": "text",
|
||||
"IsGood": 1,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 27,
|
||||
"Name": "kǒu 表示身体",
|
||||
"Answer": "口",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 27,
|
||||
"Name": "shǒu 表示身体",
|
||||
"Answer": "手",
|
||||
"Type": "text",
|
||||
"IsGood": 1,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 27,
|
||||
"Name": "zú 表示身体",
|
||||
"Answer": "足",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 27,
|
||||
"Name": "mù 表示身体",
|
||||
"Answer": "目",
|
||||
"Type": "text",
|
||||
"IsGood": 1,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 27,
|
||||
"Name": "ěr 表示身体",
|
||||
"Answer": "耳",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 27,
|
||||
"Name": "bí 表示身体",
|
||||
"Answer": "鼻",
|
||||
"Type": "text",
|
||||
"IsGood": 1,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 27,
|
||||
"Name": "shé 表示身体",
|
||||
"Answer": "舌",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 27,
|
||||
"Name": "yá 表示身体",
|
||||
"Answer": "牙",
|
||||
"Type": "text",
|
||||
"IsGood": 1,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 27,
|
||||
"Name": "xīn 表示身体",
|
||||
"Answer": "心",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 27,
|
||||
"Name": "gān 表示身体",
|
||||
"Answer": "肝",
|
||||
"Type": "text",
|
||||
"IsGood": 1,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 27,
|
||||
"Name": "chī 表示动作",
|
||||
"Answer": "吃",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 27,
|
||||
"Name": "hē 表示动作",
|
||||
"Answer": "喝",
|
||||
"Type": "text",
|
||||
"IsGood": 1,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 27,
|
||||
"Name": "zǒu 表示动作",
|
||||
"Answer": "走",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 27,
|
||||
"Name": "pǎo 表示动作",
|
||||
"Answer": "跑",
|
||||
"Type": "text",
|
||||
"IsGood": 1,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 27,
|
||||
"Name": "tiào 表示动作",
|
||||
"Answer": "跳",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 27,
|
||||
"Name": "kàn 表示动作",
|
||||
"Answer": "看",
|
||||
"Type": "text",
|
||||
"IsGood": 1,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 27,
|
||||
"Name": "tīng 表示动作",
|
||||
"Answer": "听",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 27,
|
||||
"Name": "shuō 表示动作",
|
||||
"Answer": "说",
|
||||
"Type": "text",
|
||||
"IsGood": 1,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 27,
|
||||
"Name": "dú 表示动作",
|
||||
"Answer": "读",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 27,
|
||||
"Name": "xiě 表示动作",
|
||||
"Answer": "写",
|
||||
"Type": "text",
|
||||
"IsGood": 1,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 27,
|
||||
"Name": "huà 表示动作",
|
||||
"Answer": "画",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 27,
|
||||
"Name": "yī 表示数字",
|
||||
"Answer": "一",
|
||||
"Type": "text",
|
||||
"IsGood": 1,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 27,
|
||||
"Name": "èr 表示数字",
|
||||
"Answer": "二",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 27,
|
||||
"Name": "sān 表示数字",
|
||||
"Answer": "三",
|
||||
"Type": "text",
|
||||
"IsGood": 1,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 27,
|
||||
"Name": "sì 表示数字",
|
||||
"Answer": "四",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 27,
|
||||
"Name": "wǔ 表示数字",
|
||||
"Answer": "五",
|
||||
"Type": "text",
|
||||
"IsGood": 1,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 27,
|
||||
"Name": "liù 表示数字",
|
||||
"Answer": "六",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 27,
|
||||
"Name": "qī 表示数字",
|
||||
"Answer": "七",
|
||||
"Type": "text",
|
||||
"IsGood": 1,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 27,
|
||||
"Name": "bā 表示数字",
|
||||
"Answer": "八",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 27,
|
||||
"Name": "jiǔ 表示数字",
|
||||
"Answer": "九",
|
||||
"Type": "text",
|
||||
"IsGood": 1,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 27,
|
||||
"Name": "shí 表示数字",
|
||||
"Answer": "十",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
}
|
||||
]
|
||||
{
|
||||
"question_bank": [
|
||||
{
|
||||
"QuestionId": 27,
|
||||
"Name": "rǎng#意思:喊叫。",
|
||||
"Answer": "嚷",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 27,
|
||||
"Name": "gē#意思:古代的一种兵器。",
|
||||
"Answer": "戈",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 27,
|
||||
"Name": "zhèng#意思:发愣,发呆。",
|
||||
"Answer": "怔",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 27,
|
||||
"Name": "jiāng#意思:边界。",
|
||||
"Answer": "疆",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 27,
|
||||
"Name": "jì#意思:留下的印子。",
|
||||
"Answer": "迹",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 27,
|
||||
"Name": "záo#意思:打孔,挖掘。",
|
||||
"Answer": "凿",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 27,
|
||||
"Name": "lǎn#意思:不勤奋。",
|
||||
"Answer": "懒",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 27,
|
||||
"Name": "chí#意思:舀液体或粉末状物体的小勺。",
|
||||
"Answer": "匙",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 27,
|
||||
"Name": "chàn#意思:发抖。",
|
||||
"Answer": "颤",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 27,
|
||||
"Name": "yōng#意思:平凡。",
|
||||
"Answer": "庸",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 27,
|
||||
"Name": "chóng#意思:重视,尊敬。",
|
||||
"Answer": "崇",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 27,
|
||||
"Name": "pǔ#意思:种蔬菜、花草的园子或园地。",
|
||||
"Answer": "圃",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 27,
|
||||
"Name": "chéng#意思:处罚。",
|
||||
"Answer": "惩",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 27,
|
||||
"Name": "āi#意思:悲伤,悲痛。",
|
||||
"Answer": "哀",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 27,
|
||||
"Name": "jiàn#意思:山间流水的沟。",
|
||||
"Answer": "涧",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 27,
|
||||
"Name": "dǎi#意思:捉。",
|
||||
"Answer": "逮",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 27,
|
||||
"Name": "lǜ#意思:思考。",
|
||||
"Answer": "虑",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 27,
|
||||
"Name": "fǔ#意思:古代的炊事用具,相当于现在的锅。",
|
||||
"Answer": "釜",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 27,
|
||||
"Name": "chǒu#意思:看。",
|
||||
"Answer": "瞅",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 27,
|
||||
"Name": "xiè#意思:碎末。",
|
||||
"Answer": "屑",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 27,
|
||||
"Name": "hàn#意思:广大。",
|
||||
"Answer": "瀚",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 27,
|
||||
"Name": "huò#意思:开阔,通达。",
|
||||
"Answer": "豁",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 27,
|
||||
"Name": "bāng#意思:小河。",
|
||||
"Answer": "浜",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 27,
|
||||
"Name": "dǐng#意思:古代煮东西用的器物。",
|
||||
"Answer": "鼎",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 27,
|
||||
"Name": "dī#意思:沿河、沿湖或沿海的防水构筑物,多用土石等筑成。",
|
||||
"Answer": "堤",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@ -2,451 +2,203 @@
|
||||
"question_bank": [
|
||||
{
|
||||
"QuestionId": 4,
|
||||
"Name": "Jú",
|
||||
"Answer": "巨、且、句、讵、郏、苣、姖、岠、局、拒、拠、洰、汩、车、具、冣、莒、弆、呿、駶、狙、岨、居、拘、拀、淗、湨、澽、忂、炬、柜、歫、昛、歫、举、佝、茮、柩、罝、珇、秬、矩、剧、陱、俱、伹、伿、挶、栨、椇、椐、椈、歫、毩、毱、疽、痀、眗、砠、租、窭、筥、篓、簴、籧、粔、罝、耟、聥、腒、艍、苴、莒、蒟、蘮、虡、蜛、螶、袓、襷、詎、諊、豦、貗、趄、跔、跙、踘、躆、躹、輂、邭、鄓、郹、鄅、鉅、鋸、鐻、閰、陱、雎、颶、駏、駒、駶、驧、髃、鴂、鴃、鵙、鵴、鶋、鼁、鼳",
|
||||
"Name": "xī",
|
||||
"Answer": "夕、汐、矽、穸、兮、西、茜、恓、栖、牺、硒、舾、粞、吸、希、俙、郗、唏、浠、悕、晞、欷、烯、睎、稀、豨、昔、惜、焟、腊、析、菥、淅、晰、皙、蜥、奚、溪、傒、徯、磎、蹊、豀、鼷、息、熄、蒠、瘜、螅、悉、犀、樨、膝、锡、裼、熙、僖、嘻、嬉、熹、暿、熺、羲、曦、爔、窸、蟋、肸、饻、娭、翕、噏、歙、熻、嶲、釐、醯、巇、酅、蠵、觿……",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 4,
|
||||
"Name": "Xuē",
|
||||
"Answer": "薛、靴、削、噱、学、穴、乴、峃、嶨、斈、泶、澩、燢、膤、茓、袕、觷、辥、辪、鞾、鳕、鷽、鸴、踅、謔、噱、燢、谑、疶、疨、蒆、辥、鞾、髇、髐、魈、嚻、噰、斅、斆、燢、爚、狘、瞲、籱、蠦、蠸、觷、諔、譃、谑、谔、谻、豰、貜、趞、踅、躞、遯、遪、郺、鄏、鄻、酄、鍌、鎑、鐍、闅、隟、雤、鞾、韕、顨、饇、騔、驜、鱊、鱮、鷍、鷢、鸙、麧、龤",
|
||||
"Type": "text",
|
||||
"IsGood": 1,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 4,
|
||||
"Name": "Yuè",
|
||||
"Answer": "月、悦、阅、越、岳、跃、粤、钺、栎、樾、刖、哕、妜、岄、恱、悅、戉、抈、捳、曱、枂、櫟、泧、瀹、爚、狘、玥、礿、禴、籆、籥、粤、臒、蘥、蚎、蚏、蛻、蠖、說、説、趯、跀、跃、軏、鈅、鉞、銳、銳、閱、閲、髺、鸑、鸙、黦",
|
||||
"Name": "qí",
|
||||
"Answer": "其、淇、萁、骐、琪、棋、祺、蜞、旗、鲯、綦、麒、奇、埼、䓫、崎、骑、琦、锜、齐、荠、脐、蛴、歧、岐、跂、圻、祈、旂、芪、祇、疧、畦、亓、祁、俟、耆、愭、鳍、颀、蕲、禥……",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 4,
|
||||
"Name": "Qū",
|
||||
"Answer": "区、曲、屈、趋、驱、躯、蛆、祛、麴、诎、岖、阹、憈、敺、斪、欋、氍、焌、煀、璖、癯、磲、筁、籧、粬、紶、翑、胠、臞、菃、蕖、蘧、蛐、蠷、衐、袪、覰、覷、詘、趨、躣、軀、軥、迲、遽、釻、鐻、阹、駆、駈、騶、驅、鰸、鱋、麯、麴、鼩、齲",
|
||||
"Type": "text",
|
||||
"IsGood": 1,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 4,
|
||||
"Name": "Zhuó",
|
||||
"Answer": "着、卓、灼、浊、琢、酌、啄、斫、茁、倬、诼、禚、浞、涿、濯、焯、禚、窡、籗、籱、缴、罬、蠗、諑、謶、趠、踔、蹠、躅、鉵、鐯、鐲、鵫、鷟、鸐、斀、斲、斵、晫、椓、槕、櫡、汋、淖、灂、炪、灼、烵、犳、琸、矠",
|
||||
"Name": "bó",
|
||||
"Answer": "孛、勃、浡、脖、葧、鹁、渤、伯、泊、柏、铂、舶、鲌、箔、驳、帛、博、搏、馎、膊、镈、薄、髆、欂、礴、瓝、钹、亳、袯、艴、踣、馞、襮、僰",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 4,
|
||||
"Name": "Cuì",
|
||||
"Answer": "翠、脆、粹、萃、悴、淬、毳、瘁、粹、竁、粋、紣、綷、翆、脃、膵、臎、襊、鏙、隹、顇、伜、倅、啐、崒、崪、忰、慛、椊、焠、璲、疩、皠、磪、竁、粋、縗、紣、翆、脺、膬、臎、襊、趡、鏙、顇、鷻",
|
||||
"Type": "text",
|
||||
"IsGood": 1,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 4,
|
||||
"Name": "Juàn",
|
||||
"Answer": "卷、倦、眷、绢、隽、桊、狷、鄄、绢、睠、絭、縳、罥、羂、讂、踡、錈、鎸、鐫、韏、飬、餋、鵑、鷢、奆、姢、帣、悁、惓、慻、捲、梋、棬、泫、淃、焆、獧、瓹",
|
||||
"Name": "bì",
|
||||
"Answer": "币、必、毕、坒、庇、芘、哔、毙、筚、陛、狴、梐、跸、闭、佖、邲、诐、苾、咇、泌、珌、柲、毖、铋、秘、馝、辟、碧、璧、壁、避、薜、嬖、臂、襞、躄、敝、蔽、弊、婢、萆、庳、裨、髀、畀、箅、痹、愎、湢、愊、腷、煏、贲、皕、赑、弼、蓖、滗、篦、濞、奰、髲、觱……",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 4,
|
||||
"Name": "Xuǎn",
|
||||
"Answer": "选、宣、悬、旋、玄、绚、轩、喧、渲、璇、煊、谖、萱、暄、儇、塇、媗、愃、揎、昍、晅、暅、楦、泫、洵、炫、烜、煊、玹、琄、癣、矎、禤、箮、翾、縼、繏、翧、蝖、蠉、諠、諼、讂、谖、鉉、鏇、鞙、韗、饌、駨、駽、鰚、鶱",
|
||||
"Type": "text",
|
||||
"IsGood": 1,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 4,
|
||||
"Name": "Zhàn",
|
||||
"Answer": "战、站、占、绽、栈、湛、蘸、颤、佔、偡、嶘、战、戰、搌、栈、棧、椾、榐、橏、欃、湔、湛、澶、灒、琖、皽、碊、站、綻、菚、蘸、虥、袒、襢、覱、詀、謙、譧、譫、趈、蹍、躔、輚、轏、邅、醆、鉆、鋑、鏨、饘、驏、驙、鱣、鸇",
|
||||
"Name": "yù",
|
||||
"Answer": "与、玉、驭、芋、吁、谷、峪、浴、欲、裕、预、滪、域、阈、棫、蜮、雨、郁、育、堉、淯、狱、语、谕、喻、愈、遇、寓、御、誉、豫、菀、聿、茟、昱、煜、饫、妪、彧、钰、悆、尉、蔚、熨、鹆、粥、矞、潏、遹、燏、鹬、毓、隩、薁、燠、鬻、蓣、罭……",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 4,
|
||||
"Name": "Niè",
|
||||
"Answer": "聂、涅、孽、啮、嗫、镊、蹑、陧、臬、乜、枿、槷、櫱、氼、湼、疌、痆、篞、籋、糱、糵、聂、臲、苶、菍、蘖、蠥、讘、踂、踗、踙、躡、鉩、銸、鋷、錜、鎳、鑈、闑、隉、顳、齧、齧、囁、囐、嚙、囓、孼、嵲、巕、帇、惗、敜、枿、槷、櫱、痆",
|
||||
"Type": "text",
|
||||
"IsGood": 1,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 4,
|
||||
"Name": "Suì",
|
||||
"Answer": "岁、遂、碎、穗、隧、祟、燧、谇、邃、睟、穂、襚、旞、繐、繸、譢、賥、遀、鏸、鐆、鐩、韢、髄、髓、穟、禭、穂、襚、旞、繐、繸、譢、賥、遀、鏸、鐆、鐩、韢、髄、髓、穟、禭",
|
||||
"Name": "jīng",
|
||||
"Answer": "茎、京、泾、经、荆、菁、猄、旌、惊、晶、腈、睛、粳、兢、精、鲸、麖、鼱、䴖……",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 4,
|
||||
"Name": "Yuān",
|
||||
"Answer": "渊、冤、鸳、鸢、眢、蜎、箢、肙、悁、棩、渁、渆、渕、淵、灁、鵷、鶢、鼘、鼝、囦、寃、怨、惌、棩、渕、淵、盶、眢、笎、蒬、蜎、裷、裫、駌、鳶、鴛、鼘、鼝",
|
||||
"Type": "text",
|
||||
"IsGood": 1,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 4,
|
||||
"Name": "Chuò",
|
||||
"Answer": "辍、绰、戳、啜、龊、辵、娖、婥、婼、惙、擉、歠、涰、淖、磭、篧、綴、繛、缀、腏、荃、蔟、趠、踔、踱、輟、辶、逴、酫、鑡、齪、齱、吷、啜、嚽、婥、婼、惙、擉、歠、涰",
|
||||
"Name": "shì",
|
||||
"Answer": "士、仕、氏、舐、示、世、市、式、试、拭、栻、轼、弑、似、势、事、侍、峙、恃、饰、柿、铈、筮、噬、澨、视、是、昰、𬤊、适、室、逝、释、谥、嗜、誓、媞、莳、䏡、螫、贳、奭、襫……",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 4,
|
||||
"Name": "Qì",
|
||||
"Answer": "气、器、弃、泣、契、砌、迄、汽、憩、葺、讫、沏、亟、呮、咠、唭、噐、埴、夡、忔、憇、栔、槭、欫、気、汔、洓、湆、滊、炁、焏、甈、甓、盵、矵、碛、磜、磧、碶、磩、礘、竐、綥、綮、緀、緝、罊、翜、聺、臮、艩、芞、藒、蟿、訖、趞、跂、踦、迉、郪、釮、錡、闙、霼、鯚、鶺、鼜、齌",
|
||||
"Type": "text",
|
||||
"IsGood": 1,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 4,
|
||||
"Name": "Xùn",
|
||||
"Answer": "迅、讯、训、逊、汛、殉、徇、巽、浚、逊、噀、嚑、坃、塤、壦、奞、愻、揗、攳、栒、楥、橁、殾、毥、汛、浚、潠、濬、灥、煇、燅、狥、珣、璕、畃、皨、瞓、矄、稄、筍、箰、篔、紃、絢、纁、臐、荨、蕈、薫、蘍、蟫、訊、訓、訙、訬、賐、迿、遜、鄩、鑂、鑫、雋、馴、駨、鱘、鱏",
|
||||
"Name": "fú",
|
||||
"Answer": "夫、扶、芙、蚨、畉、颫、弗、拂、佛、刜、茀、怫、绋、氟、砩、艴、伏、袱、茯、洑、栿、孚、俘、浮、郛、垺、莩、桴、罦、琈、蜉、服、菔、箙、幅、辐、福、蝠、符、苻、匐、涪、巿、芾、绂、韨、祓、凫、芣、罘、宓、枹、榑、幞、襆、黻……",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 4,
|
||||
"Name": "Zhuì",
|
||||
"Answer": "坠、赘、缀、惴、缒、甀、畷、礈、笍、綴、縋、膇、諈、贅、轛、鑆、坠、隊、隧、膇、諈、贅、鑆、墜",
|
||||
"Type": "text",
|
||||
"IsGood": 1,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 4,
|
||||
"Name": "Cuàn",
|
||||
"Answer": "窜、篡、爨、殩、熶、簒、竄、篡、镩、躥、攛、爨、殩、熶、簒、竄、篡、镩、躥、攛",
|
||||
"Name": "yì",
|
||||
"Answer": "弋、杙、𬬩、乂、刈、苅、艾、义、议、艺、呓、易、忆、亿、仡、屹、亦、弈、奕、㑊、衣、异、抑、意、薏、癔、臆、镱、𫄷、抑、佚、轶、昳、泆、役、译、驿、峄、怿、绎、邑、挹、唈、悒、浥、益、嗌、溢、缢、镒、鹢、螠、翼、翊、翌、羿、熠、翳、裔、谊、逸、蜴、埸、晹、疫、诣、毅、肄、食、燚、㹭、廙、潩、殪、曀、儗、劓、嫕、鹝、瘗、勚、枻、枍、佾、寱、懿、裛、蓺……",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 4,
|
||||
"Name": "Juē",
|
||||
"Answer": "撅、噘、屩、亅、孒、孓、屫、撅、撧、欮、決、氒、決、泬、潏、灍、玦、玨、璚、疦、瘚、絕、绝、芵、蕝、蕨、蚗、蟨、觖、觼、诀、譎、貜、赽、趹、蹶、蹷、逫、鈌、鐍、鐝、钁、駃、鴂、鴃、鷢、龣",
|
||||
"Type": "text",
|
||||
"IsGood": 1,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 4,
|
||||
"Name": "Xuè",
|
||||
"Answer": "血、谑、穴、泬、狘、桖、烕、瞲、趐、轐、轌、鉥、瀥、粵、蘥、謔、谑、趐、轐、轌、鉥",
|
||||
"Name": "huì",
|
||||
"Answer": "卉、汇、会、荟、浍、绘、桧、烩、彗、蔧、嘒、慧、槥、𬭬、讳、哕、秽、诲、晦、贿、惠、僡、蕙、潓、憓、橞、蟪、𬤝、喙、翙、阓、溃、缋、㱮、恚、硊……",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 4,
|
||||
"Name": "Zhuān",
|
||||
"Answer": "专、砖、转、颛、啭、堟、塼、嫥、専、甎、磚、竱、籑、蒃、蟤、諯、転、轉、鄟、顓、鱄",
|
||||
"Type": "text",
|
||||
"IsGood": 1,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 4,
|
||||
"Name": "Qióng",
|
||||
"Answer": "穷、琼、穹、邛、茕、筇、銎、儝、卭、嬛、憌、桏、橩、焭、焪、煢、熍、琁、璚、瓊、睘、瞏、穷、竆、笻、窮、藑、藭、蛩、蛬、赹、趜、跫、銎、顈、",
|
||||
"Name": "lì",
|
||||
"Answer": "力、朸、珕、荔、历、呖、坜、枥、沥、疬、苈、𫵷、雳、厉、励、砺、粝、蛎、栃、立、笠、莅、粒、吏、丽、郦、俪、利、莉、俐、猁、浰、痢、栗、傈、凓、溧、篥、例、戾、唳、䓞、隶、砾、栎、轹、跞、𬍛、鬲、疠、沴、詈、鬁、盭……",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 4,
|
||||
"Name": "Yuè",
|
||||
"Answer": "月、乐、越、跃、岳、悦、阅、粤、钥、栎、樾、戉、抈、岄、岳、恱、悅、戉、抈、枂、栎、樾、泧、瀹、爚、狘、玥、礿、禴、籆、籥、粤、臒、蘥、蚎、蚏、蛻、蠖、說、趯、跀、跃、軏、鈅、鉞、銳、銳、閱、閲、髺、鸑、鸙、黦",
|
||||
"Type": "text",
|
||||
"IsGood": 1,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 4,
|
||||
"Name": "Chuàng",
|
||||
"Answer": "创、怆、刱、剏、剙、愴、摐、牎、牕、瘡、窓、窗、蔥、闖、戧、摐、牎、牕、瘡、窓、窗、蔥、闖、戧",
|
||||
"Name": "jù",
|
||||
"Answer": "句、巨、拒、炬、距、苣、讵、岠、钜、秬、粔、据、剧、锯、踞、倨、具、俱、惧、犋、飓、遽、澽、醵、屦、窭、虡、聚、沮、菹……",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 4,
|
||||
"Name": "Xuān",
|
||||
"Answer": "宣、轩、喧、萱、暄、煊、儇、谖、塇、媗、愃、揎、昍、晅、暅、楦、泫、洵、炫、烜、煊、玹、琄、癣、矎、禤、箮、翾、縼、繏、翧、蝖、蠉、諠、諼、讂、谖、鉉、鏇、鞙、韗、饌、駨、駽、鰚、鶱",
|
||||
"Type": "text",
|
||||
"IsGood": 1,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 4,
|
||||
"Name": "Zhuì",
|
||||
"Answer": "坠、赘、缀、惴、缒、甀、畷、礈、笍、綴、縋、膇、諈、贅、轛、鑆、队、隧、膇、諈、贅、鑆、墜",
|
||||
"Name": "mò",
|
||||
"Answer": "末、抹、茉、沫、妺、眜、秣、靺、没、殁、陌、貊、脉、莫、漠、寞、镆、瘼、貘、蓦、磨、礳、耱、冒、万、默、嘿、墨、𬙊、眽、貉……",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 4,
|
||||
"Name": "Niè",
|
||||
"Answer": "聂、涅、孽、啮、嗫、镊、蹑、陧、臬、乜、枿、槷、櫱、氼、湼、疌、痆、篞、籋、糱、糵、聂、臲、苶、菍、蘖、蠥、讘、踂、踗、踙、躡、鉩、銸、鋷、錜、鎳、鑈、闑、隉、顳、齧、齧、囁、囐、嚙、囓、孼、嵲、巕、帇、惗、敜、枿、槷、櫱、痆",
|
||||
"Type": "text",
|
||||
"IsGood": 1,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 4,
|
||||
"Name": "Suì",
|
||||
"Answer": "岁、遂、碎、穗、隧、祟、燧、谇、邃、睟、穂、襚、旞、繐、繸、譢、賥、遀、鏸、鐆、鐩、韢、髄、髓、穟、禭、穂、襚、旞、繐、繸、譢、賥、遀、鏸、鐆、鐩、韢、髄、髓、穟、禭",
|
||||
"Name": "lù",
|
||||
"Answer": "陆、录、菉、㟤、渌、绿、琭、禄、碌、睩、箓、醁、逯、𫘧、鹿、麓、漉、辘、䍡、簏、辂、赂、路、蕗、潞、璐、鹭、稑、蓼、僇、勠、戮、露、甪……",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 4,
|
||||
"Name": "Yuān",
|
||||
"Answer": "渊、冤、鸳、鸢、眢、蜎、箢、肙、悁、棩、渁、渆、渕、淵、灁、鵷、鶢、鼘、鼝、囦、寃、怨、惌、棩、渕、淵、盶、眢、笎、蒬、蜎、裷、裫、駌、鳶、鴛、鼘、鼝",
|
||||
"Type": "text",
|
||||
"IsGood": 1,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 4,
|
||||
"Name": "Chuò",
|
||||
"Answer": "辍、绰、戳、啜、龊、辵、娖、婥、婼、惙、擉、歠、涰、淖、磭、篧、綴、繛、缀、腏、荃、蔟、趠、踔、踱、輟、辶、逴、酫、鑡、齪、齱、吷、啜、嚽、婥、婼、惙、擉、歠、涰",
|
||||
"Name": "wèi",
|
||||
"Answer": "卫、胃、渭、煟、猬、谓、未、味、为、位、味、畏、喂、碨、尉、蔚、慰、罻、霨、鳚、螱、魏、遗、硙、𬭬……",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 4,
|
||||
"Name": "Qì",
|
||||
"Answer": "气、器、弃、泣、契、砌、迄、汽、憩、葺、讫、沏、亟、呮、咠、唭、噐、埴、夡、忔、憇、栔、槭、欫、気、汔、洓、湆、滊、炁、焏、甈、甓、盵、矵、碛、磜、磧、碶、磩、礘、竐、綥、綮、緀、緝、罊、翜、聺、臮、艩、芞、藒、蟿、訖、趞、跂、踦、迉、郪、釮、錡、闙、霼、鯚、鶺、鼜、齌",
|
||||
"Type": "text",
|
||||
"IsGood": 1,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 4,
|
||||
"Name": "Xùn",
|
||||
"Answer": "迅、讯、训、逊、汛、殉、徇、巽、浚、逊、噀、嚑、坃、塤、壦、奞、愻、揗、攳、栒、楥、橁、殾、毥、汛、浚、潠、濬、灥、煇、燅、狥、珣、璕、畃、皨、瞓、矄、稄、筍、箰、篔、紃、絢、纁、臐、荨、蕈、薫、蘍、蟫、訊、訓、訙、訬、賐、迿、遜、鄩、鑂、鑫、雋、馴、駨、鱘、鱏",
|
||||
"Name": "hú",
|
||||
"Answer": "抇、囫、和、狐、弧、胡、壶、核、斛、搰、葫、鹄、猢、湖、瑚、煳、鹕、嘝、鹘、槲、蝴、糊、縠、醐、觳",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 4,
|
||||
"Name": "Zhuì",
|
||||
"Answer": "坠、赘、缀、惴、缒、甀、畷、礈、笍、綴、縋、膇、諈、贅、轛、鑆、坠、隊、隧、膇、諈、贅、鑆、墜",
|
||||
"Type": "text",
|
||||
"IsGood": 1,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 4,
|
||||
"Name": "Cuàn",
|
||||
"Answer": "窜、篡、爨、殩、熶、簒、竄、篡、镩、躥、攛、爨、殩、熶、簒、竄、篡、镩、躥、攛",
|
||||
"Name": "zhì",
|
||||
"Answer": "质、锧、踬、志、梽、痣、至、致、晊、桎、厔、铚、郅、轾、蛭、窒、膣、螲、智、滞、治、识、帜、秩、帙、稚、雉、痔、峙、庤、畤、跱、贽、挚、鸷、掷、制、炙、置、忮、陟、栉、狾、豸、滍、骘、彘、疐、瘈、觯、擿……",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 4,
|
||||
"Name": "Juē",
|
||||
"Answer": "撅、噘、屩、亅、孒、孓、屫、撅、撧、欮、決、氒、決、泬、潏、灍、玦、玨、璚、疦、瘚、絕、绝、芵、蕝、蕨、蚗、蟨、觖、觼、诀、譎、貜、赽、趹、蹶、蹷、逫、鈌、鐍、鐝、钁、駃、鴂、鴃、鷢、龣",
|
||||
"Type": "text",
|
||||
"IsGood": 1,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 4,
|
||||
"Name": "Xuè",
|
||||
"Answer": "血、谑、穴、泬、狘、桖、烕、瞲、趐、轐、轌、鉥、瀥、粵、蘥、謔、谑、趐、轐、轌、鉥",
|
||||
"Name": "jié",
|
||||
"Answer": "孑、节、劫、蜐、劼、诘、洁、结、桔、袺、颉、鲒、拮、杰、疌、捷、婕、睫、倢、寁、竭、偈、楬、碣、羯、截、桀、榤、岊、讦、絜、㛃……",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 4,
|
||||
"Name": "Zhuān",
|
||||
"Answer": "专、砖、转、颛、啭、堟、塼、嫥、専、甎、磚、竱、籑、蒃、蟤、諯、転、轉、鄟、顓、鱄",
|
||||
"Type": "text",
|
||||
"IsGood": 1,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 4,
|
||||
"Name": "Qióng",
|
||||
"Answer": "穷、琼、穹、邛、茕、筇、銎、儝、卭、嬛、憌、桏、橩、焭、焪、煢、熍、琁、璚、瓊、睘、瞏、穷、竆、笻、窮、藑、藭、蛩、蛬、赹、趜、跫、銎、顈、",
|
||||
"Name": "líng",
|
||||
"Answer": "令、伶、坽、苓、囹、泠、姈、玲、柃、昤、瓴、铃、鸰、聆、蛉、零、龄、澪、笭、舲、翎、羚、凌、陵、菱、㥄、绫、棱、祾、鲮、灵、棂、〇、酃、醽……",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 4,
|
||||
"Name": "Yuè",
|
||||
"Answer": "月、乐、越、跃、岳、悦、阅、粤、钥、栎、樾、戉、抈、岄、岳、恱、悅、戉、抈、枂、栎、樾、泧、瀹、爚、狘、玥、礿、禴、籆、籥、粤、臒、蘥、蚎、蚏、蛻、蠖、說、趯、跀、跃、軏、鈅、鉞、銳、銳、閱、閲、髺、鸑、鸙、黦",
|
||||
"Type": "text",
|
||||
"IsGood": 1,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 4,
|
||||
"Name": "Chuàng",
|
||||
"Answer": "创、怆、刱、剏、剙、愴、摐、牎、牕、瘡、窓、窗、蔥、闖、戧、摐、牎、牕、瘡、窓、窗、蔥、闖、戧",
|
||||
"Name": "jì",
|
||||
"Answer": "计、记、纪、忌、跽、技、妓、芰、伎、齐、济、剂、哜、荠、霁、鲚、系、际、季、悸、迹、既、堲、穊、暨、塈、𬶨、觊、继、祭、漈、穄、𬶭、徛、寄、寂、绩、鲫、冀、骥、蓟、稷、髻、垍、洎、𪟝、偈、惎、檵、罽、瀱……",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 4,
|
||||
"Name": "Xuān",
|
||||
"Answer": "宣、轩、喧、萱、暄、煊、儇、谖、塇、媗、愃、揎、昍、晅、暅、楦、泫、洵、炫、烜、煊、玹、琄、癣、矎、禤、箮、翾、縼、繏、翧、蝖、蠉、諠、諼、讂、谖、鉉、鏇、鞙、韗、饌、駨、駽、鰚、鶱",
|
||||
"Type": "text",
|
||||
"IsGood": 1,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 4,
|
||||
"Name": "Zhuì",
|
||||
"Answer": "坠、赘、缀、惴、缒、甀、畷、礈、笍、綴、縋、膇、諈、贅、轛、鑆、队、隧、膇、諈、贅、鑆、墜",
|
||||
"Name": "jué",
|
||||
"Answer": "孓、决、诀、抉、玦、砄、觖、角、桷、珏、觉、绝、倔、掘、崛、脚、厥、劂、蕨、獗、㵐、橛、蹶、镢、谲、噱、爵、矍、玃、攫、蠼、嚼、爝……",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 4,
|
||||
"Name": "Niè",
|
||||
"Answer": "聂、涅、孽、啮、嗫、镊、蹑、陧、臬、乜、枿、槷、櫱、氼、湼、疌、痆、篞、籋、糱、糵、聂、臲、苶、菍、蘖、蠥、讘、踂、踗、踙、躡、鉩、銸、鋷、錜、鎳、鑈、闑、隉、顳、齧、齧、囁、囐、嚙、囓、孼、嵲、巕、帇、惗、敜、枿、槷、櫱、痆",
|
||||
"Type": "text",
|
||||
"IsGood": 1,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 4,
|
||||
"Name": "Suì",
|
||||
"Answer": "岁、遂、碎、穗、隧、祟、燧、谇、邃、睟、穂、襚、旞、繐、繸、譢、賥、遀、鏸、鐆、鐩、韢、髄、髓、穟、禭、穂、襚、旞、繐、繸、譢、賥、遀、鏸、鐆、鐩、韢、髄、髓、穟、禭",
|
||||
"Name": "jiāo",
|
||||
"Answer": "艽、交、郊、茭、峧、浇、娇、姣、骄、胶、教、椒、蛟、焦、跤、僬、鲛、蕉、嶕、燋、礁、鹪……",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 4,
|
||||
"Name": "Yuān",
|
||||
"Answer": "渊、冤、鸳、鸢、眢、蜎、箢、肙、悁、棩、渁、渆、渕、淵、灁、鵷、鶢、鼘、鼝、囦、寃、怨、惌、棩、渕、淵、盶、眢、笎、蒬、蜎、裷、裫、駌、鳶、鴛、鼘、鼝",
|
||||
"Type": "text",
|
||||
"IsGood": 1,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 4,
|
||||
"Name": "Chuò",
|
||||
"Answer": "辍、绰、戳、啜、龊、辵、娖、婥、婼、惙、擉、歠、涰、淖、磭、篧、綴、繛、缀、腏、荃、蔟、趠、踔、踱、輟、辶、逴、酫、鑡、齪、齱、吷、啜、嚽、婥、婼、惙、擉、歠、涰",
|
||||
"Name": "jiàn",
|
||||
"Answer": "见、舰、剑、件、箭、间、涧、锏、饯、贱、践、溅、建、健、键、踺、楗、腱、荐、监、槛、渐、谏、毽、鉴、牮、僭……",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 4,
|
||||
"Name": "Qì",
|
||||
"Answer": "气、器、弃、泣、契、砌、迄、汽、憩、葺、讫、沏、亟、呮、咠、唭、噐、埴、夡、忔、憇、栔、槭、欫、気、汔、洓、湆、滊、炁、焏、甈、甓、盵、矵、碛、磜、磧、碶、磩、礘、竐、綥、綮、緀、緝、罊、翜、聺、臮、艩、芞、藒、蟿、訖、趞、跂、踦、迉、郪、釮、錡、闙、霼、鯚、鶺、鼜、齌",
|
||||
"Type": "text",
|
||||
"IsGood": 1,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 4,
|
||||
"Name": "Xùn",
|
||||
"Answer": "迅、讯、训、逊、汛、殉、徇、巽、浚、逊、噀、嚑、坃、塤、壦、奞、愻、揗、攳、栒、楥、橁、殾、毥、汛、浚、潠、濬、灥、煇、燅、狥、珣、璕、畃、皨、瞓、矄、稄、筍、箰、篔、紃、絢、纁、臐、荨、蕈、薫、蘍、蟫、訊、訓、訙、訬、賐、迿、遜、鄩、鑂、鑫、雋、馴、駨、鱘、鱏",
|
||||
"Name": "hé",
|
||||
"Answer": "禾、和、合、郃、饸、颌、𬌗、何、河、荷、菏、纥、龁、核、劾、阂、曷、鹖、鞨、盒、盍、盉、涸、阖、翮、貉、龢……",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 4,
|
||||
"Name": "Zhuì",
|
||||
"Answer": "坠、赘、缀、惴、缒、甀、畷、礈、笍、綴、縋、膇、諈、贅、轛、鑆、坠、隊、隧、膇、諈、贅、鑆、墜",
|
||||
"Type": "text",
|
||||
"IsGood": 1,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 4,
|
||||
"Name": "Cuàn",
|
||||
"Answer": "窜、篡、爨、殩、熶、簒、竄、篡、镩、躥、攛、爨、殩、熶、簒、竄、篡、镩、躥、攛",
|
||||
"Name": "yàn",
|
||||
"Answer": "厌、研、砚、咽、彦、谚、喭、艳、滟、晏、宴、堰、燕、嬿、唁、验、雁、赝、焰、焱、觃、烻、墕、酽、餍、谳……",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 4,
|
||||
"Name": "Juē",
|
||||
"Answer": "撅、噘、屩、亅、孒、孓、屫、撅、撧、欮、決、氒、決、泬、潏、灍、玦、玨、璚、疦、瘚、絕、绝、芵、蕝、蕨、蚗、蟨、觖、觼、诀、譎、貜、赽、趹、蹶、蹷、逫、鈌、鐍、鐝、钁、駃、鴂、鴃、鷢、龣",
|
||||
"Type": "text",
|
||||
"IsGood": 1,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 4,
|
||||
"Name": "Xuè",
|
||||
"Answer": "血、谑、穴、泬、狘、桖、烕、瞲、趐、轐、轌、鉥、瀥、粵、蘥、謔、谑、趐、轐、轌、鉥",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 4,
|
||||
"Name": "Zhuān",
|
||||
"Answer": "专、砖、转、颛、啭、堟、塼、嫥、専、甎、磚、竱、籑、蒃、蟤、諯、転、轉、鄟、顓、鱄",
|
||||
"Type": "text",
|
||||
"IsGood": 1,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 4,
|
||||
"Name": "Qióng",
|
||||
"Answer": "穷、琼、穹、邛、茕、筇、銎、儝、卭、嬛、憌、桏、橩、焭、焪、煢、熍、琁、璚、瓊、睘、瞏、穷、竆、笻、窮、藑、藭、蛩、蛬、赹、趜、跫、銎、顈、",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 4,
|
||||
"Name": "Yuè",
|
||||
"Answer": "月、乐、越、跃、岳、悦、阅、粤、钥、栎、樾、戉、抈、岄、岳、恱、悅、戉、抈、枂、栎、樾、泧、瀹、爚、狘、玥、礿、禴、籆、籥、粤、臒、蘥、蚎、蚏、蛻、蠖、說、趯、跀、跃、軏、鈅、鉞、銳、銳、閱、閲、髺、鸑、鸙、黦",
|
||||
"Type": "text",
|
||||
"IsGood": 1,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 4,
|
||||
"Name": "Chuàng",
|
||||
"Answer": "创、怆、刱、剏、剙、愴、摐、牎、牕、瘡、窓、窗、蔥、闖、戧、摐、牎、牕、瘡、窓、窗、蔥、闖、戧",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 4,
|
||||
"Name": "Xuān",
|
||||
"Answer": "宣、轩、喧、萱、暄、煊、儇、谖、塇、媗、愃、揎、昍、晅、暅、楦、泫、洵、炫、烜、煊、玹、琄、癣、矎、禤、箮、翾、縼、繏、翧、蝖、蠉、諠、諼、讂、谖、鉉、鏇、鞙、韗、饌、駨、駽、鰚、鶱",
|
||||
"Type": "text",
|
||||
"IsGood": 1,
|
||||
"ImageUrl": ""
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
254
apps/question-importer/store/联想对对碰.json
Normal file
@ -0,0 +1,254 @@
|
||||
{
|
||||
"question_bank": [
|
||||
{
|
||||
"name": "重阳、习俗、思念",
|
||||
"answer": "遥知兄弟登高处,遍插茱萸少一人。",
|
||||
"imageUrl": "",
|
||||
"IsGood": 0,
|
||||
"IsDisabled": false,
|
||||
"KeyWord": "处",
|
||||
"KeyWordsIndex": 6,
|
||||
"questionId": 32
|
||||
},
|
||||
{
|
||||
"name": "边塞、征战、思乡",
|
||||
"answer": "秦时明月汉时关,万里长征人未还。",
|
||||
"imageUrl": "",
|
||||
"IsGood": 0,
|
||||
"IsDisabled": false,
|
||||
"KeyWord": "关",
|
||||
"KeyWordsIndex": 6,
|
||||
"questionId": 32
|
||||
},
|
||||
{
|
||||
"name": "军中、饮酒、欢快",
|
||||
"answer": "葡萄美酒夜光杯,欲饮琵琶马上催。",
|
||||
"imageUrl": "",
|
||||
"IsGood": 0,
|
||||
"IsDisabled": false,
|
||||
"KeyWord": "催",
|
||||
"KeyWordsIndex": 13,
|
||||
"questionId": 32
|
||||
},
|
||||
{
|
||||
"name": "初夏、田园、蔬果",
|
||||
"answer": "梅子金黄杏子肥,麦花雪白菜花稀。",
|
||||
"imageUrl": "",
|
||||
"IsGood": 0,
|
||||
"IsDisabled": false,
|
||||
"KeyWord": "肥",
|
||||
"KeyWordsIndex": 6,
|
||||
"questionId": 32
|
||||
},
|
||||
{
|
||||
"name": "童趣、追跑、田野",
|
||||
"answer": "儿童急走追黄蝶,飞入菜花无处寻。",
|
||||
"imageUrl": "",
|
||||
"IsGood": 0,
|
||||
"IsDisabled": false,
|
||||
"KeyWord": "蝶",
|
||||
"KeyWordsIndex": 6,
|
||||
"questionId": 32
|
||||
},
|
||||
{
|
||||
"name": "送别、赤诚、朋友",
|
||||
"answer": "洛阳亲友如相问,一片冰心在玉壶。",
|
||||
"imageUrl": "",
|
||||
"IsGood": 0,
|
||||
"IsDisabled": false,
|
||||
"KeyWord": "心",
|
||||
"KeyWordsIndex": 10,
|
||||
"questionId": 32
|
||||
},
|
||||
{
|
||||
"name": "梅花、香气、傲骨",
|
||||
"answer": "不要人夸好颜色,只留清气满乾坤。",
|
||||
"imageUrl": "",
|
||||
"IsGood": 0,
|
||||
"IsDisabled": false,
|
||||
"KeyWord": "好",
|
||||
"KeyWordsIndex": 4,
|
||||
"questionId": 32
|
||||
},
|
||||
{
|
||||
"name": "遗愿、爱国、失地",
|
||||
"answer": "死去元知万事空,但悲不见九州同。",
|
||||
"imageUrl": "",
|
||||
"IsGood": 0,
|
||||
"IsDisabled": false,
|
||||
"KeyWord": "悲",
|
||||
"KeyWordsIndex": 8,
|
||||
"questionId": 32
|
||||
},
|
||||
{
|
||||
"name": "水滨、笙乐、忧愁",
|
||||
"answer": "山外青山楼外楼,西湖歌舞几时休?",
|
||||
"imageUrl": "",
|
||||
"IsGood": 0,
|
||||
"IsDisabled": false,
|
||||
"KeyWord": "休",
|
||||
"KeyWordsIndex": 13,
|
||||
"questionId": 32
|
||||
},
|
||||
{
|
||||
"name": "祈求、变革、贤能",
|
||||
"answer": "我劝天公重抖擞,不拘一格降人材。",
|
||||
"imageUrl": "",
|
||||
"IsGood": 0,
|
||||
"IsDisabled": false,
|
||||
"KeyWord": "公",
|
||||
"KeyWordsIndex": 3,
|
||||
"questionId": 32
|
||||
},
|
||||
{
|
||||
"name": "深夜、羁客、寒冷",
|
||||
"answer": "月落乌啼霜满天,江枫渔火对愁眠。",
|
||||
"imageUrl": "",
|
||||
"IsGood": 0,
|
||||
"IsDisabled": false,
|
||||
"KeyWord": "愁",
|
||||
"KeyWordsIndex": 12,
|
||||
"questionId": 32
|
||||
},
|
||||
{
|
||||
"name": "登科、飞驰、盛景",
|
||||
"answer": "春风得意马蹄疾,一日看尽长安花。",
|
||||
"imageUrl": "",
|
||||
"IsGood": 0,
|
||||
"IsDisabled": false,
|
||||
"KeyWord": "花",
|
||||
"KeyWordsIndex": 13,
|
||||
"questionId": 32
|
||||
},
|
||||
{
|
||||
"name": "耕地、纺织、协作",
|
||||
"answer": "昼出耘田夜绩麻,村庄儿女各当家。",
|
||||
"imageUrl": "",
|
||||
"IsGood": 0,
|
||||
"IsDisabled": false,
|
||||
"KeyWord": "村",
|
||||
"KeyWordsIndex": 7,
|
||||
"questionId": 32
|
||||
},
|
||||
{
|
||||
"name": "悠闲、放牧、吹奏",
|
||||
"answer": "牧童归去横牛背,短笛无腔信口吹。",
|
||||
"imageUrl": "",
|
||||
"IsGood": 0,
|
||||
"IsDisabled": false,
|
||||
"KeyWord": "背",
|
||||
"KeyWordsIndex": 6,
|
||||
"questionId": 32
|
||||
},
|
||||
{
|
||||
"name": "童趣、玩耍、敲击",
|
||||
"answer": "稚子金盆脱晓冰,彩丝穿取当银钲。",
|
||||
"imageUrl": "",
|
||||
"IsGood": 0,
|
||||
"IsDisabled": false,
|
||||
"KeyWord": "脱",
|
||||
"KeyWordsIndex": 4,
|
||||
"questionId": 32
|
||||
},
|
||||
{
|
||||
"name": "欣喜、回家、畅饮",
|
||||
"answer": "白日放歌须纵酒,青春作伴好还乡。",
|
||||
"imageUrl": "",
|
||||
"IsGood": 0,
|
||||
"IsDisabled": false,
|
||||
"KeyWord": "须",
|
||||
"KeyWordsIndex": 4,
|
||||
"questionId": 32
|
||||
},
|
||||
{
|
||||
"name": "雄师、豪迈、跋涉",
|
||||
"answer": "红军不怕远征难,万水千山只等闲。",
|
||||
"imageUrl": "",
|
||||
"IsGood": 0,
|
||||
"IsDisabled": false,
|
||||
"KeyWord": "怕",
|
||||
"KeyWordsIndex": 3,
|
||||
"questionId": 32
|
||||
},
|
||||
{
|
||||
"name": "中秋、怀人、月亮",
|
||||
"answer": "今夜月明人尽望,不知秋思落谁家。",
|
||||
"imageUrl": "",
|
||||
"IsGood": 0,
|
||||
"IsDisabled": false,
|
||||
"KeyWord": "思",
|
||||
"KeyWordsIndex": 10,
|
||||
"questionId": 32
|
||||
},
|
||||
{
|
||||
"name": "无畏、高尚、咏物",
|
||||
"answer": "粉骨碎身浑不怕,要留清白在人间。",
|
||||
"imageUrl": "",
|
||||
"IsGood": 0,
|
||||
"IsDisabled": false,
|
||||
"KeyWord": "浑",
|
||||
"KeyWordsIndex": 4,
|
||||
"questionId": 32
|
||||
},
|
||||
{
|
||||
"name": "坚韧、勇气、咏物",
|
||||
"answer": "咬定青山不放松,立根原在破岩中。",
|
||||
"imageUrl": "",
|
||||
"IsGood": 0,
|
||||
"IsDisabled": false,
|
||||
"KeyWord": "根",
|
||||
"KeyWordsIndex": 8,
|
||||
"questionId": 32
|
||||
},
|
||||
{
|
||||
"name": "送别、边塞、畅饮",
|
||||
"answer": "劝君更尽一杯酒,西出阳关无故人。",
|
||||
"imageUrl": "",
|
||||
"IsGood": 0,
|
||||
"IsDisabled": false,
|
||||
"KeyWord": "关",
|
||||
"KeyWordsIndex": 10,
|
||||
"questionId": 32
|
||||
},
|
||||
{
|
||||
"name": "细雨、嫩绿、朦胧",
|
||||
"answer": "天街小雨润如酥,草色遥看近却无。",
|
||||
"imageUrl": "",
|
||||
"IsGood": 0,
|
||||
"IsDisabled": false,
|
||||
"KeyWord": "街",
|
||||
"KeyWordsIndex": 1,
|
||||
"questionId": 32
|
||||
},
|
||||
{
|
||||
"name": "哭泣、沦陷、期盼",
|
||||
"answer": "遗民泪尽胡尘里,南望王师又一年。",
|
||||
"imageUrl": "",
|
||||
"IsGood": 0,
|
||||
"IsDisabled": false,
|
||||
"KeyWord": "师",
|
||||
"KeyWordsIndex": 10,
|
||||
"questionId": 32
|
||||
},
|
||||
{
|
||||
"name": "酒菜、好客、乡村",
|
||||
"answer": "莫笑农家腊酒浑,丰年留客足鸡豚。",
|
||||
"imageUrl": "",
|
||||
"IsGood": 0,
|
||||
"IsDisabled": false,
|
||||
"KeyWord": "足",
|
||||
"KeyWordsIndex": 11,
|
||||
"questionId": 32
|
||||
},
|
||||
{
|
||||
"name": "初夏、喧闹、江南",
|
||||
"answer": "黄梅时节家家雨,青草池塘处处蛙。",
|
||||
"imageUrl": "",
|
||||
"IsGood": 0,
|
||||
"IsDisabled": false,
|
||||
"KeyWord": "池",
|
||||
"KeyWordsIndex": 9,
|
||||
"questionId": 32
|
||||
}
|
||||
]
|
||||
}
|
||||
@ -2,424 +2,200 @@
|
||||
"question_bank": [
|
||||
{
|
||||
"QuestionId": 3,
|
||||
"Name": "chì rè",
|
||||
"Answer": "炽热",
|
||||
"Name": "shùn jiān",
|
||||
"Answer": "瞬间",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 3,
|
||||
"Name": "hào hàn",
|
||||
"Answer": "浩瀚",
|
||||
"Type": "text",
|
||||
"IsGood": 1,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 3,
|
||||
"Name": "péng bó",
|
||||
"Answer": "蓬勃",
|
||||
"Name": "kuì jiù",
|
||||
"Answer": "愧疚",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 3,
|
||||
"Name": "cuǐ càn",
|
||||
"Answer": "璀璨",
|
||||
"Type": "text",
|
||||
"IsGood": 1,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 3,
|
||||
"Name": "yōu yǎ",
|
||||
"Answer": "优雅",
|
||||
"Name": "guàn gài",
|
||||
"Answer": "灌溉",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 3,
|
||||
"Name": "xuàn lì",
|
||||
"Answer": "绚丽",
|
||||
"Type": "text",
|
||||
"IsGood": 1,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 3,
|
||||
"Name": "wǎn zhuǎn",
|
||||
"Answer": "婉转",
|
||||
"Name": "mà zha",
|
||||
"Answer": "蚂蚱",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 3,
|
||||
"Name": "páng bó",
|
||||
"Answer": "磅礴",
|
||||
"Type": "text",
|
||||
"IsGood": 1,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 3,
|
||||
"Name": "xuān nào",
|
||||
"Answer": "喧闹",
|
||||
"Name": "zhèng tuō",
|
||||
"Answer": "挣脱",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 3,
|
||||
"Name": "yùn lǜ",
|
||||
"Answer": "韵律",
|
||||
"Type": "text",
|
||||
"IsGood": 1,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 3,
|
||||
"Name": "diāo zhuó",
|
||||
"Answer": "雕琢",
|
||||
"Name": "shòu xuē",
|
||||
"Answer": "瘦削",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 3,
|
||||
"Name": "qīng cuì",
|
||||
"Answer": "清脆",
|
||||
"Type": "text",
|
||||
"IsGood": 1,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 3,
|
||||
"Name": "xiāo sè",
|
||||
"Answer": "萧瑟",
|
||||
"Name": "zhì xù",
|
||||
"Answer": "秩序",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 3,
|
||||
"Name": "pú táo jiǔ",
|
||||
"Answer": "葡萄酒",
|
||||
"Type": "text",
|
||||
"IsGood": 1,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 3,
|
||||
"Name": "mǎ lù biān",
|
||||
"Answer": "马路边",
|
||||
"Name": "diān fù",
|
||||
"Answer": "颠覆",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 3,
|
||||
"Name": "hú dié jié",
|
||||
"Answer": "蝴蝶结",
|
||||
"Type": "text",
|
||||
"IsGood": 1,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 3,
|
||||
"Name": "shuǐ jīng qiú",
|
||||
"Answer": "水晶球",
|
||||
"Name": "qǐ pàn",
|
||||
"Answer": "企盼",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 3,
|
||||
"Name": "chūn tiān dào",
|
||||
"Answer": "春天到",
|
||||
"Type": "text",
|
||||
"IsGood": 1,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 3,
|
||||
"Name": "xiǎo niǎo jiào",
|
||||
"Answer": "小鸟叫",
|
||||
"Name": "lián mǐn",
|
||||
"Answer": "怜悯",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 3,
|
||||
"Name": "huā ér xiāng",
|
||||
"Answer": "花儿香",
|
||||
"Type": "text",
|
||||
"IsGood": 1,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 3,
|
||||
"Name": "yuè liàng wān",
|
||||
"Answer": "月亮弯",
|
||||
"Name": "qīng miè",
|
||||
"Answer": "轻蔑",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 3,
|
||||
"Name": "xīng xing shǎn",
|
||||
"Answer": "星星闪",
|
||||
"Type": "text",
|
||||
"IsGood": 1,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 3,
|
||||
"Name": "qīng wā tiào",
|
||||
"Answer": "青蛙跳",
|
||||
"Name": "gān gà",
|
||||
"Answer": "尴尬",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 3,
|
||||
"Name": "zhī zhū wǎng",
|
||||
"Answer": "蜘蛛网",
|
||||
"Type": "text",
|
||||
"IsGood": 1,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 3,
|
||||
"Name": "yī bēn zhèng jīng",
|
||||
"Answer": "一本正经",
|
||||
"Name": "hú lún",
|
||||
"Answer": "囫囵",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 3,
|
||||
"Name": "wǔ guāng shí sè",
|
||||
"Answer": "五光十色",
|
||||
"Type": "text",
|
||||
"IsGood": 1,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 3,
|
||||
"Name": "qī shàng bā xià",
|
||||
"Answer": "七上八下",
|
||||
"Name": "diǎn zhuì",
|
||||
"Answer": "点缀",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 3,
|
||||
"Name": "shǒu máng jiǎo luàn",
|
||||
"Answer": "手忙脚乱",
|
||||
"Type": "text",
|
||||
"IsGood": 1,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 3,
|
||||
"Name": "huā hóng liǔ lǜ",
|
||||
"Answer": "花红柳绿",
|
||||
"Name": "kuò chuò",
|
||||
"Answer": "阔绰",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 3,
|
||||
"Name": "shān qīng shuǐ xiù",
|
||||
"Answer": "山清水秀",
|
||||
"Type": "text",
|
||||
"IsGood": 1,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 3,
|
||||
"Name": "chūn nuǎn huā kāi",
|
||||
"Answer": "春暖花开",
|
||||
"Name": "dàng yàng",
|
||||
"Answer": "荡漾",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 3,
|
||||
"Name": "qiū gāo qì shuǎng",
|
||||
"Answer": "秋高气爽",
|
||||
"Type": "text",
|
||||
"IsGood": 1,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 3,
|
||||
"Name": "dōng nuǎn xià liáng",
|
||||
"Answer": "冬暖夏凉",
|
||||
"Name": "bǐ shǒu",
|
||||
"Answer": "匕首",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 3,
|
||||
"Name": "yuè míng xīng xī",
|
||||
"Answer": "月明星稀",
|
||||
"Type": "text",
|
||||
"IsGood": 1,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 3,
|
||||
"Name": "fēng hé rì lì",
|
||||
"Answer": "风和日丽",
|
||||
"Name": "áo xiáng",
|
||||
"Answer": "翱翔",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 3,
|
||||
"Name": "shǔ yì",
|
||||
"Answer": "鼠疫",
|
||||
"Type": "text",
|
||||
"IsGood": 1,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 3,
|
||||
"Name": "qiǎn xiǎn",
|
||||
"Answer": "浅显",
|
||||
"Name": "fǔ xiǔ",
|
||||
"Answer": "腐朽",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 3,
|
||||
"Name": "zhì nèn",
|
||||
"Answer": "稚嫩",
|
||||
"Type": "text",
|
||||
"IsGood": 1,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 3,
|
||||
"Name": "sù xiàng",
|
||||
"Answer": "塑像",
|
||||
"Name": "wēi é",
|
||||
"Answer": "巍峨",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 3,
|
||||
"Name": "yōu xián",
|
||||
"Answer": "悠闲",
|
||||
"Type": "text",
|
||||
"IsGood": 1,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 3,
|
||||
"Name": "hēi bǎn bǐ",
|
||||
"Answer": "黑板笔",
|
||||
"Name": "qiáo chǔ",
|
||||
"Answer": "翘楚",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 3,
|
||||
"Name": "lán qiú chǎng",
|
||||
"Answer": "篮球场",
|
||||
"Type": "text",
|
||||
"IsGood": 1,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 3,
|
||||
"Name": "yóu yǒng chí",
|
||||
"Answer": "游泳池",
|
||||
"Name": "juān kè",
|
||||
"Answer": "镌刻",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 3,
|
||||
"Name": "tú shū guǎn",
|
||||
"Answer": "图书馆",
|
||||
"Type": "text",
|
||||
"IsGood": 1,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 3,
|
||||
"Name": "diàn yǐng yuàn",
|
||||
"Answer": "电影院",
|
||||
"Name": "kēng qiāng",
|
||||
"Answer": "铿锵",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 3,
|
||||
"Name": "rén shān rén hǎi",
|
||||
"Answer": "人山人海",
|
||||
"Type": "text",
|
||||
"IsGood": 1,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 3,
|
||||
"Name": "wàn zǐ qiān hóng",
|
||||
"Answer": "万紫千红",
|
||||
"Name": "páo xiào",
|
||||
"Answer": "咆哮",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 3,
|
||||
"Name": "qiān biàn wàn huà",
|
||||
"Answer": "千变万化",
|
||||
"Type": "text",
|
||||
"IsGood": 1,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 3,
|
||||
"Name": "wú biān wú jì",
|
||||
"Answer": "无边无际",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 3,
|
||||
"Name": "bǎi huā qí fàng",
|
||||
"Answer": "百花齐放",
|
||||
"Type": "text",
|
||||
"IsGood": 1,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 3,
|
||||
"Name": "bǎi nián shù rén",
|
||||
"Answer": "百年树人",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 3,
|
||||
"Name": "qiān chuí bǎi liàn",
|
||||
"Answer": "千锤百炼",
|
||||
"Type": "text",
|
||||
"IsGood": 1,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 3,
|
||||
"Name": "wàn lǐ cháng chéng",
|
||||
"Answer": "万里长城",
|
||||
"Name": "pāi shè",
|
||||
"Answer": "拍摄",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
|
||||
100
apps/question-importer/store/诗词常识.json
Normal file
@ -0,0 +1,100 @@
|
||||
{
|
||||
"question_bank": [
|
||||
{
|
||||
"QuestionId": 34,
|
||||
"Name": "<p>诗人袁枚写的与<strong>美食</strong>有关的书是( )。</p><p><strong> A.《食经》 B.《食珍录》 C.《红楼梦》 D.《随园食单》</strong></p>",
|
||||
"Answer": "D",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 34,
|
||||
"Name": "<p>“我家洗砚池头树”引用了一位<strong>书法家</strong>的典故,这位书法家是( )。</p><p><strong> A.王献之 B.王羲之 C.王冕 D.柳公权</strong></p>",
|
||||
"Answer": "B",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 34,
|
||||
"Name": "<p>“诗中有画,画中有诗”评价的是( )。</p><p><strong> A.杜牧的诗画风格</strong></p><p><strong> B.刘禹锡的诗画风格</strong></p><p><strong> C.苏轼的诗画风格</strong></p><p><strong> D.王维的诗画风格</strong></p>",
|
||||
"Answer": "D",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 34,
|
||||
"Name": "<p>被闻一多称为“<strong>诗中的诗</strong>,顶峰上的顶峰”的诗歌作品是( )。</p><p><strong> A.刘希夷的《代悲白头翁》</strong></p><p><strong> B.杨广的《春江花月夜》</strong></p><p><strong> C.张若虚的《春江花月夜》</strong></p><p><strong> D.李白的《蜀道难》</strong></p>",
|
||||
"Answer": "C",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 34,
|
||||
"Name": "<p>“<strong>梅妻鹤子</strong>”指的是( )。</p><p><strong> A.林逋 B.梅尧臣 C.苏舜钦 D.王安石</strong></p>",
|
||||
"Answer": "A",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 34,
|
||||
"Name": "<p>“一门父子三词客,千古文章八大家。”这副对联中提到的“<strong>三父子</strong>”是( )。</p><p><strong> A.曹操、曹丕、曹植</strong></p><p><strong> B.苏洵、苏轼、苏辙</strong></p><p><strong> C.班彪、班固、班超</strong></p><p><strong> D.阮瑀、阮籍、阮咸</strong></p>",
|
||||
"Answer": "B",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 34,
|
||||
"Name": "<p>诗人刘禹锡被<strong>称</strong>为( )。</p><p><strong> A.“诗鬼” B.“诗豪” C.“诗圣” D.“诗仙”</strong></p>",
|
||||
"Answer": "B",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 34,
|
||||
"Name": "<p>有关诗人卢钺的信息,<strong>不正确</strong>的一项是( )。</p><p><strong> A.别号梅坡</strong></p><p><strong> B.代表作《雪梅》</strong></p><p><strong> C.与辛派词人陈亮是好友</strong></p><p><strong> D.宋朝人</strong></p>",
|
||||
"Answer": "C",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 34,
|
||||
"Name": "<p>诗人王昌龄被<strong>称</strong>为( )。</p><p><strong> A.“五言圣手” B.“七绝圣手” C.“七言圣手” D.“七绝诗人”</strong></p>",
|
||||
"Answer": "B",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 34,
|
||||
"Name": "<p>李商隐与杜牧<strong>合称</strong>( )。</p><p><strong> A.“李杜” B.“杜李” C.“小李杜” D.“唐诗双杰”</strong></p>",
|
||||
"Answer": "C",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 34,
|
||||
"Name": "<p>“南朝四百八十寺”中,“<strong>南朝</strong>”指的是( )。</p><p><strong> A.在南方建都的王朝</strong></p><p><strong> B.宋、齐、魏、陈四个朝代的总称</strong></p><p><strong> C.宋、齐、梁、陈四个朝代的总称</strong></p><p><strong> D.在南京建都的王朝</strong></p>",
|
||||
"Answer": "C",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
},
|
||||
{
|
||||
"QuestionId": 34,
|
||||
"Name": "<p>“<strong>初唐四杰</strong>”是指( )。</p><p><strong> A.张若虚、张旭、孔融和贺知章</strong></p><p><strong> B.王勃、杨炯、卢照邻和骆宾王</strong></p><p><strong> C.高适、王昌龄、岑参和王之涣</strong></p><p><strong> D.贺知章、张若虚、张旭和包融</strong></p>",
|
||||
"Answer": "B",
|
||||
"Type": "text",
|
||||
"IsGood": 0,
|
||||
"ImageUrl": ""
|
||||
}
|
||||
]
|
||||
}
|
||||