|
|
@@ -1,79 +1,3 @@
|
|
|
-// 基础、题型组件编辑和设置页面
|
|
|
-import DividerPage from '../create/components/base/divider/Divider.vue';
|
|
|
-import DividerSetting from '../create/components/base/divider/DividerSetting.vue';
|
|
|
-// import SpacingPage from '../create/components/base/spacing/Spacing.vue';
|
|
|
-// import SpacingSetting from '../create/components/base/spacing/SpacingSetting.vue';
|
|
|
-import AudioPage from '../create/components/base/audio/Audio.vue';
|
|
|
-import AudioSetting from '../create/components/base/audio/AudioSetting.vue';
|
|
|
-import PicturePage from '../create/components/base/picture/Picture.vue';
|
|
|
-import PictureSetting from '../create/components/base/picture/PictureSetting.vue';
|
|
|
-import SelectPage from '../create/components/question/select/Select.vue';
|
|
|
-import SelectSetting from '../create/components/question/select/SelectSetting.vue';
|
|
|
-import VideoPage from '../create/components/base/video/Video.vue';
|
|
|
-import VideoSetting from '../create/components/base/video/VideoSetting.vue';
|
|
|
-// import StemPage from '../create/components/base/stem/Stem.vue';
|
|
|
-// import StemSetting from '../create/components/base/stem/StemSetting.vue';
|
|
|
-import RichTextPage from '../create/components/base/rich_text/RichText.vue';
|
|
|
-import RichTextSetting from '../create/components/base/rich_text/RichTextSetting.vue';
|
|
|
-import LabelPage from '../create/components/base/label/Label.vue';
|
|
|
-import LabelSetting from '../create/components/base/label/LabelSetting.vue';
|
|
|
-import MatchingPage from '../create/components/question/matching/Matching.vue';
|
|
|
-import MatchingSetting from '../create/components/question/matching/MatchingSetting.vue';
|
|
|
-import SortPage from '../create/components/question/sort/Sort.vue';
|
|
|
-import SortSetting from '../create/components/question/sort/SortSetting.vue';
|
|
|
-import VoiceMatrix from '../create/components/question/voice_matrix/VoiceMatrix.vue';
|
|
|
-import VoiceMatrixSetting from '../create/components/question/voice_matrix/VoiceMatrixSetting.vue';
|
|
|
-import FillPage from '../create/components/question/fill/Fill.vue';
|
|
|
-import FillSetting from '../create/components/question/fill/FillSetting.vue';
|
|
|
-import RecordInput from '../create/components/question/record_input/RecordInput.vue';
|
|
|
-import RecordInputSetting from '../create/components/question/record_input/RecordInputSetting.vue';
|
|
|
-// import UploadControl from '../create/components/base/upload_control/UploadControl.vue';
|
|
|
-// import UploadControlSetting from '../create/components/base/upload_control/UploadControlSetting.vue';
|
|
|
-import UploadPreview from '../create/components/base/upload_preview/UploadPreview.vue';
|
|
|
-import UploadRreviewSetting from '../create/components/base/upload_preview/UploadRreviewSetting.vue';
|
|
|
-import PinyinBase from '../create/components/question/pinyin_base/PinyinBase.vue';
|
|
|
-import PinyinBaseSetting from '../create/components/question/pinyin_base/PinyinBaseSetting.vue';
|
|
|
-// import CharacterBase from '../create/components/base/character_base/CharacterBase.vue';
|
|
|
-// import CharacterBaseSetting from '../create/components/base/character_base/CharacterBaseSetting.vue';
|
|
|
-import Character from '../create/components/question/character/Character.vue';
|
|
|
-import CharacterSetting from '../create/components/question/character/CharacterSetting.vue';
|
|
|
-// import Write from '../create/components/question/write/Write.vue';
|
|
|
-// import WriteSetting from '../create/components/question/write/WriteSetting.vue';
|
|
|
-import NewWord from '../create/components/question/new_word/NewWord.vue';
|
|
|
-import NewWordSetting from '../create/components/question/new_word/NewWordSetting.vue';
|
|
|
-import Notes from '../create/components/question/notes/Notes.vue';
|
|
|
-import NotesSetting from '../create/components/question/notes/NotesSetting.vue';
|
|
|
-// import OtherWord from '../create/components/question/other_word/OtherWord.vue';
|
|
|
-// import OtherWordSetting from '../create/components/question/other_word/OtherWordSetting.vue';
|
|
|
-import Article from '../create/components/question/article/Article.vue';
|
|
|
-import ArticleSetting from '../create/components/question/article/ArticleSetting.vue';
|
|
|
-// import Math from '../create/components/question/math/Math.vue';
|
|
|
-// import MathSetting from '../create/components/question/math/MathSetting.vue';
|
|
|
-import Input from '../create/components/question/input/Input.vue';
|
|
|
-import InputSetting from '../create/components/question/input/InputSetting.vue';
|
|
|
-import Judge from '../create/components/question/judge/Judge.vue';
|
|
|
-import JudgeSetting from '../create/components/question/judge/JudgeSetting.vue';
|
|
|
-import WriteBase from '../create/components/base/write_base/WriteBase.vue';
|
|
|
-import WriteBaseSetting from '../create/components/base/write_base/WriteBaseSetting.vue';
|
|
|
-import ImageText from '../create/components/question/image_text/ImageText.vue';
|
|
|
-import ImageTextSetting from '../create/components/question/image_text/ImageTextSetting.vue';
|
|
|
-import H5Games from '../create/components/base/h5_games/H5Games.vue';
|
|
|
-import H5GamesSetting from '../create/components/base/h5_games/H5GamesSetting.vue';
|
|
|
-import Drawing from '../create/components/question/drawing/Drawing.vue';
|
|
|
-import DrawingSetting from '../create/components/question/drawing/DrawingSetting.vue';
|
|
|
-import VideoInteraction from '../create/components/question/video_interaction/VideoInteraction.vue';
|
|
|
-import VideoInteractionSetting from '../create/components/question/video_interaction/VideoInteractionSetting.vue';
|
|
|
-import ThreeModel from '../create/components/base/3d_model/3DModel.vue';
|
|
|
-import ThreeModelSetting from '../create/components/base/3d_model/3DModelSetting.vue';
|
|
|
-import Table from '../create/components/question/table/Table.vue';
|
|
|
-import TableSetting from '../create/components/question/table/TableSetting.vue';
|
|
|
-import DialogueArticlePage from '../create/components/question/dialogue_article/Article.vue';
|
|
|
-import DialogueArticleSetting from '../create/components/question/dialogue_article/ArticleSetting.vue';
|
|
|
-import NewWordTemplate from '../create/components/question/newWord_template/NewWordTemplate.vue';
|
|
|
-import NewWordTemplateSetting from '../create/components/question/newWord_template/NewWordTemplateSetting.vue';
|
|
|
-import CharacterStructure from '../create/components/question/character_structure/CharacterStructure.vue';
|
|
|
-import CharacterStructureSetting from '../create/components/question/character_structure/CharacterStructureSetting.vue';
|
|
|
-
|
|
|
// 预览组件页面列表
|
|
|
import AudioPreview from '@/views/book/courseware/preview/components/audio/AudioPreview.vue';
|
|
|
import DividerPreview from '@/views/book/courseware/preview/components/divider/DividerPreview.vue';
|
|
|
@@ -94,7 +18,7 @@ import UploadPreviewPreview from '../preview/components/upload_preview/UploadPre
|
|
|
import PinyinBasePreview from '../preview/components/pinyin_base/PinyinBasePreview.vue';
|
|
|
// import CharacterBasePreview from '../preview/components/character_base/CharacterBasePreview.vue';
|
|
|
import CharacterPreview from '../preview/components/character/CharacterPreview.vue';
|
|
|
-// import WritePreview from '../preview/components/write/WritePreview.vue';
|
|
|
+import WritePreview from '../preview/components/write/WritePreview.vue';
|
|
|
import NewWordPreview from '../preview/components/new_word/NewWordPreview.vue';
|
|
|
import NotesPreview from '../preview/components/notes/NotesPreview.vue';
|
|
|
// import OtherWordPreview from '../preview/components/other_word/OtherWordPreview.vue';
|
|
|
@@ -117,7 +41,7 @@ import CharacterStructurePreview from '../preview/components/character_structure
|
|
|
export const bookTypeOption = [
|
|
|
{
|
|
|
value: 'base',
|
|
|
- label: '基础',
|
|
|
+ label: '基础组件',
|
|
|
children: [
|
|
|
// {
|
|
|
// value: 'stem',
|
|
|
@@ -132,104 +56,60 @@ export const bookTypeOption = [
|
|
|
value: 'richtext',
|
|
|
label: '富文本',
|
|
|
icon: 'richtext',
|
|
|
- component: RichTextPage,
|
|
|
- set: RichTextSetting,
|
|
|
preview: DescribePreview,
|
|
|
},
|
|
|
{
|
|
|
value: 'label',
|
|
|
label: '标签',
|
|
|
icon: 'label',
|
|
|
- component: LabelPage,
|
|
|
- set: LabelSetting,
|
|
|
preview: LabelPreview,
|
|
|
},
|
|
|
{
|
|
|
value: 'audio',
|
|
|
label: '音频',
|
|
|
icon: 'audio',
|
|
|
- component: AudioPage,
|
|
|
- set: AudioSetting,
|
|
|
preview: AudioPreview,
|
|
|
},
|
|
|
{
|
|
|
value: 'video',
|
|
|
label: '视频',
|
|
|
icon: 'video',
|
|
|
- component: VideoPage,
|
|
|
- set: VideoSetting,
|
|
|
preview: VideoPreview,
|
|
|
},
|
|
|
{
|
|
|
value: 'picture',
|
|
|
label: '图片',
|
|
|
icon: 'picture',
|
|
|
- component: PicturePage,
|
|
|
- set: PictureSetting,
|
|
|
preview: PicturePreview,
|
|
|
},
|
|
|
- // {
|
|
|
- // value: 'upload_control',
|
|
|
- // label: '上传',
|
|
|
- // icon: 'uploadControl',
|
|
|
- // component: UploadControl,
|
|
|
- // set: UploadControlSetting,
|
|
|
- // preview: UploadControlPreview,
|
|
|
- // },
|
|
|
{
|
|
|
value: 'upload_preview',
|
|
|
label: '上传',
|
|
|
icon: 'uploadPreview',
|
|
|
- component: UploadPreview,
|
|
|
- set: UploadRreviewSetting,
|
|
|
preview: UploadPreviewPreview,
|
|
|
},
|
|
|
{
|
|
|
value: 'divider',
|
|
|
label: '分隔',
|
|
|
icon: 'spacing',
|
|
|
- component: DividerPage,
|
|
|
- set: DividerSetting,
|
|
|
preview: DividerPreview,
|
|
|
},
|
|
|
- // {
|
|
|
- // value: 'spacing',
|
|
|
- // label: '间距',
|
|
|
- // icon: 'spacing',
|
|
|
- // component: SpacingPage,
|
|
|
- // set: SpacingSetting,
|
|
|
- // preview: SpacingPreview,
|
|
|
- // },
|
|
|
- // {
|
|
|
- // value: 'character_base',
|
|
|
- // label: '汉字',
|
|
|
- // icon: 'chineseCharacter',
|
|
|
- // component: CharacterBase,
|
|
|
- // set: CharacterBaseSetting,
|
|
|
- // preview: CharacterBasePreview,
|
|
|
- // },
|
|
|
{
|
|
|
value: 'write_base',
|
|
|
label: '写字',
|
|
|
icon: 'write_base',
|
|
|
- component: WriteBase,
|
|
|
- set: WriteBaseSetting,
|
|
|
preview: WriteBasePreview,
|
|
|
},
|
|
|
{
|
|
|
value: 'h5_games',
|
|
|
label: 'H5游戏',
|
|
|
icon: 'games',
|
|
|
- component: H5Games,
|
|
|
- set: H5GamesSetting,
|
|
|
preview: H5GamesPreview,
|
|
|
},
|
|
|
{
|
|
|
value: '3DModel',
|
|
|
label: '3D模型',
|
|
|
icon: 'three-model',
|
|
|
- component: ThreeModel,
|
|
|
- set: ThreeModelSetting,
|
|
|
preview: ThreeModelPreview,
|
|
|
},
|
|
|
],
|
|
|
@@ -240,202 +120,128 @@ export const bookTypeOption = [
|
|
|
children: [
|
|
|
{
|
|
|
value: 'article',
|
|
|
- label: '文章',
|
|
|
+ label: '文章组件',
|
|
|
icon: '',
|
|
|
- component: Article,
|
|
|
- set: ArticleSetting,
|
|
|
preview: ArticlePreview,
|
|
|
},
|
|
|
{
|
|
|
value: 'dialogue_article',
|
|
|
label: '对话课文',
|
|
|
icon: '',
|
|
|
- component: DialogueArticlePage,
|
|
|
- set: DialogueArticleSetting,
|
|
|
preview: DialogueArticlePreview,
|
|
|
},
|
|
|
{
|
|
|
value: 'select',
|
|
|
- label: '选择',
|
|
|
+ label: '选择组件',
|
|
|
icon: '',
|
|
|
- component: SelectPage,
|
|
|
- set: SelectSetting,
|
|
|
preview: SelectPreview,
|
|
|
},
|
|
|
{
|
|
|
value: 'matching',
|
|
|
- label: '连线',
|
|
|
+ label: '连线组件',
|
|
|
icon: '',
|
|
|
- component: MatchingPage,
|
|
|
- set: MatchingSetting,
|
|
|
preview: MatchingPreview,
|
|
|
},
|
|
|
{
|
|
|
value: 'sort',
|
|
|
- label: '排序',
|
|
|
+ label: '排序组件',
|
|
|
icon: '',
|
|
|
- component: SortPage,
|
|
|
- set: SortSetting,
|
|
|
preview: SortPreview,
|
|
|
},
|
|
|
{
|
|
|
value: 'voice_matrix',
|
|
|
label: '语音矩阵',
|
|
|
icon: '',
|
|
|
- component: VoiceMatrix,
|
|
|
- set: VoiceMatrixSetting,
|
|
|
preview: VoiceMatrixPreview,
|
|
|
},
|
|
|
{
|
|
|
value: 'fill',
|
|
|
- label: '填空',
|
|
|
+ label: '填空组件',
|
|
|
icon: '',
|
|
|
- component: FillPage,
|
|
|
- set: FillSetting,
|
|
|
preview: FillPreview,
|
|
|
},
|
|
|
{
|
|
|
value: 'record_input',
|
|
|
- label: '录音',
|
|
|
+ label: '录音组件',
|
|
|
icon: '',
|
|
|
- component: RecordInput,
|
|
|
- set: RecordInputSetting,
|
|
|
preview: RecordInputPreview,
|
|
|
},
|
|
|
{
|
|
|
value: 'new_word',
|
|
|
- label: '生词',
|
|
|
+ label: '生词组件',
|
|
|
icon: '',
|
|
|
- component: NewWord,
|
|
|
- set: NewWordSetting,
|
|
|
preview: NewWordPreview,
|
|
|
},
|
|
|
{
|
|
|
value: 'notes',
|
|
|
- label: '注释',
|
|
|
+ label: '注释组件',
|
|
|
icon: '',
|
|
|
- component: Notes,
|
|
|
- set: NotesSetting,
|
|
|
preview: NotesPreview,
|
|
|
},
|
|
|
- // {
|
|
|
- // value: 'other_word',
|
|
|
- // label: '其他词汇',
|
|
|
- // icon: '',
|
|
|
- // component: OtherWord,
|
|
|
- // set: OtherWordSetting,
|
|
|
- // preview: OtherWordPreview,
|
|
|
- // },
|
|
|
{
|
|
|
value: 'character',
|
|
|
- label: '汉字',
|
|
|
+ label: '汉字组件',
|
|
|
icon: '',
|
|
|
- component: Character,
|
|
|
- set: CharacterSetting,
|
|
|
preview: CharacterPreview,
|
|
|
},
|
|
|
{
|
|
|
value: 'newWord_template',
|
|
|
label: '生字',
|
|
|
icon: '',
|
|
|
- component: NewWordTemplate,
|
|
|
- set: NewWordTemplateSetting,
|
|
|
preview: NewWordTemplatePreview,
|
|
|
},
|
|
|
{
|
|
|
value: 'character_structure',
|
|
|
label: '汉字结构',
|
|
|
icon: '',
|
|
|
- component: CharacterStructure,
|
|
|
- set: CharacterStructureSetting,
|
|
|
preview: CharacterStructurePreview,
|
|
|
},
|
|
|
- // {
|
|
|
- // value: 'write',
|
|
|
- // label: '书写',
|
|
|
- // icon: '',
|
|
|
- // component: Write,
|
|
|
- // set: WriteSetting,
|
|
|
- // preview: WritePreview,
|
|
|
- // },
|
|
|
- // {
|
|
|
- // value: 'math',
|
|
|
- // label: '公式',
|
|
|
- // icon: '',
|
|
|
- // component: Math,
|
|
|
- // set: MathSetting,
|
|
|
- // preview: MathPreview,
|
|
|
- // },
|
|
|
{
|
|
|
value: 'input',
|
|
|
- label: '输入框',
|
|
|
+ label: '输入框组件',
|
|
|
icon: '',
|
|
|
- component: Input,
|
|
|
- set: InputSetting,
|
|
|
preview: InputPreview,
|
|
|
},
|
|
|
{
|
|
|
value: 'judge',
|
|
|
- label: '判断',
|
|
|
+ label: '判断组件',
|
|
|
icon: '',
|
|
|
- component: Judge,
|
|
|
- set: JudgeSetting,
|
|
|
preview: JudgePreview,
|
|
|
},
|
|
|
{
|
|
|
value: 'image_text',
|
|
|
label: '图片文本融合',
|
|
|
icon: '',
|
|
|
- component: ImageText,
|
|
|
- set: ImageTextSetting,
|
|
|
preview: ImageTextPreview,
|
|
|
},
|
|
|
{
|
|
|
value: 'table',
|
|
|
label: '表格',
|
|
|
icon: '',
|
|
|
- component: Table,
|
|
|
- set: TableSetting,
|
|
|
preview: TablePreview,
|
|
|
},
|
|
|
{
|
|
|
value: 'pinyin_base',
|
|
|
- label: '拼音',
|
|
|
+ label: '拼音组件',
|
|
|
icon: '',
|
|
|
- component: PinyinBase,
|
|
|
- set: PinyinBaseSetting,
|
|
|
preview: PinyinBasePreview,
|
|
|
},
|
|
|
{
|
|
|
value: 'video_interaction',
|
|
|
label: '视频交互',
|
|
|
icon: '',
|
|
|
- component: VideoInteraction,
|
|
|
- set: VideoInteractionSetting,
|
|
|
preview: VideoInteractionPreview,
|
|
|
},
|
|
|
{
|
|
|
value: 'drawing',
|
|
|
label: '画板',
|
|
|
icon: '',
|
|
|
- component: Drawing,
|
|
|
- set: DrawingSetting,
|
|
|
preview: DrawingPreview,
|
|
|
},
|
|
|
],
|
|
|
},
|
|
|
];
|
|
|
|
|
|
-// 组件列表
|
|
|
-export const componentList = bookTypeOption
|
|
|
- .flatMap((item) => item.children)
|
|
|
- .reduce((prev, { value, component }) => ({ ...prev, [value]: component }), {});
|
|
|
-
|
|
|
-// 组件设置列表
|
|
|
-export const componentSettingList = bookTypeOption
|
|
|
- .flatMap((item) => item.children)
|
|
|
- .reduce((prev, { value, set }) => ({ ...prev, [value]: set }), {});
|
|
|
-
|
|
|
// 组件名称列表
|
|
|
export const componentNameList = bookTypeOption
|
|
|
.flatMap((item) => item.children)
|