declare namespace ROUTER { type RoutesProps = RouteRecordRaw & { title: string, link: boolean } type RouterRecords = { navbar: { route: RoutesProps[], selectPath: string[] }, sider: { route: RoutesProps[], selectPath: string, openKeys: string[] }, } } declare namespace SERVICE { type Response = { status: number, msg: string, data: T, sum: number } } declare namespace API { interface Stage { id?: string, title: string parentId?: string, child: Stage[] } interface Card { 'id'?: string, 'page': string, 'name': string, 'parentId': string, 'img': string, 'thumbnail': string card_type: 5 | 21 } interface Feedback { 'id'?: string, cardId: string 'page': string, feedback: string } interface Audio { id?: string, title: string, url: string state: 'stopped' | 'playing' | 'paused' } /* is_break 音乐是否需要打断 */ /* 0,能被其他音频打断,不能打断其他音频; 1,能被其他音频打断,能打断其他音频; 2,不能被其他音频打断,不能打断其他音频; 3,不能被其他音频打断,能打断其他音频; */ type is_break = 0 | 1 | 2 | 3 type Btn_select = 'G' | 'R' | 'P' | 'T' | 'B' | 'Y' | '' type Rule = 7 | 9 | 10 | 14 | 15 | 16 | 17 | 18 type BaseItem = {'music_name': string, 'is_break': is_break } interface CardDot { name: string, col: number, row: number selected: boolean id: number music_name: number } interface CardJson { header: { card_type: 5 | 21 title: { 'category': number, 'id': number, 'sub_id': number, 'page': number, 'music_name': string, 'is_break': number }, 'card_insert': { 'music_name': string, 'is_break': number }, 'card_knob': { 'music_name': string, 'is_break': number }, 'card_remove': { 'music_name': string, 'is_break': number }, // 一次全部正确 'ack_ok': { 'music_name': string, 'is_break': number }, // 多次全部正确 'ack_mdf': { 'music_name': string, 'is_break': number }, // 6钮错误 'ack_err': { 'music_name': string, 'is_break': number }, // 答错两次以上 'remind_ack': { 'music_name': string, 'is_break': number }, // 提示钮 'remind_button': { 'music_name': string, 'is_break': number }, // 点击过后5秒未答题 'remind_not_ack': { 'music_name': string, 'is_break': number }, 'wait_30s': { 'music_name': string, 'is_break': number }, 'wait_90s': { 'music_name': string, 'is_break': number } } touch_key: { music_name: string, is_break: number, id: number, selected: boolean name: string, row: number, col: number }[] slide_knob?: { score1: Btn_select, score2: Btn_select score3: Btn_select score4: Btn_select score5: Btn_select score6: Btn_select purple: {music_name: string, is_break: number, key: string }[], red: {music_name: string, is_break: number, key: string }[], blue: {music_name: string, is_break: number, key: string }[], green: {music_name: string, is_break: number, key: string }[], tangerine: {music_name: string, is_break: number, key: string }[], yellow: {music_name: string, is_break: number, key: string }[] }, } interface CardJsonDefault { 'ack_err': { 'is_break': 0, 'music_name': '' }, 'ack_mdf': { 'is_break': 0, 'music_name': '' }, 'ack_ok': { 'is_break': 0, 'music_name': '' }, 'button_rep': { 'is_break': 0, 'music_name': '' }, 'card_insert': { 'is_break': 0, 'music_name': '' }, 'card_remove': { 'is_break': 0, 'music_name': '' }, 'finish': { 'is_break': 0, 'music_name': '' }, 'remind_ack': { 'is_break': 0, 'music_name': '' }, 'remind_button': { 'is_break': 0, 'music_name': '' }, 'remind_not_ack': { 'is_break': 0, 'music_name': '' }, 'wait_30s': { 'is_break': 0, 'music_name': '' }, 'wait_90s': { 'is_break': 0, 'music_name': '' } } type CardJson21Item = CardJson21['game_list'][0]['items'][0] type CardJson21TouchKey = ({ 'value': number } & {'music_name': string, 'is_break': is_break })[] interface CardJson21 { 'header': { 'card_type': number, 'grade'?: number, 'g_number'?: number, 'title': { 'category': number, 'id': number, 'sub_id': number, 'page': number, 'music_name': string, 'is_break': is_break }, 'card_insert': BaseItem, 'card_remove': BaseItem, 'finish': BaseItem }, 'game_list': { 'rule': Rule, // 卡片规则 'main_subject': BaseItem, // 每个游戏读题音 'ordered_multiple_err': BaseItem, // 顺序多选错误音 'has_click_single': BaseItem // 这个已经点过了 'has_click_group': BaseItem // 这组已经点过了 'still_have': BaseItem // 再次点击 'multiple_err': BaseItem // 多次错误语音 'wait_30s': BaseItem // 等待30s的语音 'wait_90s': BaseItem // 等待90s的语音 'touch_key': ({ 'value': number } & BaseItem)[][], // 21时顶部三个的配置 'items': { 'sub_subject': { 'music_name': string, // 单节小标题 'mb': number, 'ok': string, 'ob': number, 'err': string, 'eb': number }, 'ok_key': ({ 'value': number } & BaseItem & CardDot)[] // 正确的键位key 'err_key': ({ 'value': number} & BaseItem & CardDot)[], // 错误的键位key }[] 'ok_key_voice': ({ 'value': number | string} & BaseItem & CardDot)[] // 正确的声音 'err_key_voice': ({ 'value': number | string} & BaseItem & CardDot)[] // 点击错误的声音 }[] } interface Category { id: string title: string choose: boolean } }