guanchunjie vor 3 Jahren
Ursprung
Commit
202b04f9cc

BIN
src/assets/NPC/jia-white-disabled.png


BIN
src/assets/NPC/jia-white-grey.png


BIN
src/assets/NPC/jia-yellow-disabled.png


BIN
src/assets/NPC/jian-white-disabled.png


BIN
src/assets/NPC/jian-yellow-disabled.png


+ 724 - 724
src/components/Adult/common/data.js

@@ -1,738 +1,738 @@
 let fnData = [{
-        type: "article_chs",
-        name: "课文",
-    }, {
-        type: "dialogue_article_chs",
-        name: "对话课文",
-    },
-    {
-        type: "sentence_segword_chs",
-        name: "句子分词",
-    },
-    {
-        type: "NewWord_chs",
-        name: "生词",
-    },
-    {
-        type: "notes_chs",
-        name: "注释",
+  type: "article_chs",
+  name: "课文",
+}, {
+  type: "dialogue_article_chs",
+  name: "对话课文",
+},
+{
+  type: "sentence_segword_chs",
+  name: "句子分词",
+},
+{
+  type: "NewWord_chs",
+  name: "生词",
+},
+{
+  type: "notes_chs",
+  name: "注释",
 
-    }, {
-        type: "dialogue_answer_chs",
-        name: "对话题模板"
-    }, {
-        type: "sentence_chs",
-        name: "句子模板",
-        list: [{
-                type: "sentence_input_chs",
-                name: "句子填空",
-            },
-            {
-                type: "sentence_judge_chs",
-                name: "句子判断",
-            },
-            {
-                type: "sentence_record_chs",
-                name: "句子录音",
-            },
-            {
-                type: "sentence_input_record_chs",
-                name: "句子填空+录音",
-            },
-            {
-                type: "sentence_listen_read_chs",
-                name: "句子听+朗读",
-            },
-        ],
+}, {
+  type: "dialogue_answer_chs",
+  name: "对话题模板"
+}, {
+  type: "sentence_chs",
+  name: "句子模板",
+  list: [{
+    type: "sentence_input_chs",
+    name: "句子填空",
+  },
+  {
+    type: "sentence_judge_chs",
+    name: "句子判断",
+  },
+  {
+    type: "sentence_record_chs",
+    name: "句子录音",
+  },
+  {
+    type: "sentence_input_record_chs",
+    name: "句子填空+录音",
+  },
+  {
+    type: "sentence_listen_read_chs",
+    name: "句子听+朗读",
+  },
+  ],
 
-    }, 
-    // {
-    //     type: "image_question",
-    //     name: "看图模板",
-    //     list: [{
-    //         type: "image_question_input",
-    //         name: "看图填空",
-    //     }, {
-    //         type: "image_question_record",
-    //         name: "看图录入",
-    //     }, {
-    //         type: "image_question_input_record",
-    //         name: "看图填空+录入",
-    //     }]
-    // }, 
-    {
-        type: "voice_matrix",
-        name: "语音矩阵",
-    },
-    //  {
-    //     type: "divider",
-    //     name: "分割线",
-    //     data_structure: {
-    //         type: 'divider',
-    //         name: "分割线",
-    //     }
-    // },
-    // {
-    //     type: "text",
-    //     name: "文本描述",
-    //     data_structure: {
-    //         type: 'text',
-    //         name: "文本描述",
-    //         con: '',
-    //         pinyin: '',
-    //         english: '',
-    //         img_list: [],
-    //         mp3_list: []
-    //     }
-    // },
-    {
-        type: "single_chs",
-        name: "单选题",
-    },
-    // {
-    //     type: "listen_record_single_chs",
-    //     name: "听录音选答案",
-    // },
-    // {
-    //     type: "checkbox_chs",
-    //     name: "多选题",
-    // },
-    {
-        type: "checkbox_self_assessment_chs",
-        name: "自我评估"
-    },
-    // {
-    //     type: "judge",
-    //     name: "判断题",
-    //     data_structure: {
-    //         type: 'judge',
-    //         name: "判断题",
-    //         title: "",
-    //         con: '',
-    //         pinyin: '',
-    //         img_list: [],
-    //         mp3_list: [],
-    //         judge: ''
-    //     }
-    // },
-    // {
-    //     type: "multiRowInput",
-    //     name: "多行文本题",
-    //     data_structure: {
-    //         type: 'multiRowInput',
-    //         name: "多行文本题",
-    //         title: "",
-    //         con: [{
-    //             con: '',
-    //             annotation: "", //注释
-    //         }],
-    //         pinyin: '',
-    //         img_list: [],
-    //         mp3_list: [],
-    //         fn_list: [{
-    //             type: 'astrictNumber',
-    //             name: '限制字数',
-    //             isFn: false,
-    //         }, ],
-    //     }
-    // },
-    // {
-    //     type: "singleRowInput",
-    //     name: "单行文本题",
-    //     data_structure: {
-    //         type: 'singleRowInput',
-    //         name: "单行文本题",
-    //         title: "",
+},
+// {
+//     type: "image_question",
+//     name: "看图模板",
+//     list: [{
+//         type: "image_question_input",
+//         name: "看图填空",
+//     }, {
+//         type: "image_question_record",
+//         name: "看图录入",
+//     }, {
+//         type: "image_question_input_record",
+//         name: "看图填空+录入",
+//     }]
+// }, 
+{
+  type: "voice_matrix",
+  name: "语音矩阵",
+},
+//  {
+//     type: "divider",
+//     name: "分割线",
+//     data_structure: {
+//         type: 'divider',
+//         name: "分割线",
+//     }
+// },
+// {
+//     type: "text",
+//     name: "文本描述",
+//     data_structure: {
+//         type: 'text',
+//         name: "文本描述",
+//         con: '',
+//         pinyin: '',
+//         english: '',
+//         img_list: [],
+//         mp3_list: []
+//     }
+// },
+{
+  type: "single_chs",
+  name: "单选题",
+},
+// {
+//     type: "listen_record_single_chs",
+//     name: "听录音选答案",
+// },
+// {
+//     type: "checkbox_chs",
+//     name: "多选题",
+// },
+{
+  type: "checkbox_self_assessment_chs",
+  name: "自我评估"
+},
+// {
+//     type: "judge",
+//     name: "判断题",
+//     data_structure: {
+//         type: 'judge',
+//         name: "判断题",
+//         title: "",
+//         con: '',
+//         pinyin: '',
+//         img_list: [],
+//         mp3_list: [],
+//         judge: ''
+//     }
+// },
+// {
+//     type: "multiRowInput",
+//     name: "多行文本题",
+//     data_structure: {
+//         type: 'multiRowInput',
+//         name: "多行文本题",
+//         title: "",
+//         con: [{
+//             con: '',
+//             annotation: "", //注释
+//         }],
+//         pinyin: '',
+//         img_list: [],
+//         mp3_list: [],
+//         fn_list: [{
+//             type: 'astrictNumber',
+//             name: '限制字数',
+//             isFn: false,
+//         }, ],
+//     }
+// },
+// {
+//     type: "singleRowInput",
+//     name: "单行文本题",
+//     data_structure: {
+//         type: 'singleRowInput',
+//         name: "单行文本题",
+//         title: "",
 
-    //         con: [{
-    //             con: '',
-    //             annotation: "", //注释
-    //         }],
-    //         pinyin: '',
-    //         img_list: [],
-    //         mp3_list: [],
-    //         fn_list: [{
-    //             type: 'astrictNumber',
-    //             name: '限制字数',
-    //             isFn: false,
-    //         }, ],
-    //     }
-    // },
-    // {
-    //     type: "hanzi",
-    //     name: "汉字模版",
-    //     data_structure: {
-    //         type: 'hanzi',
-    //         name: "汉字模版",
-    //         title: "",
-    //         option: [{
-    //             hanzi: '',
-    //             pinyin: '',
-    //             mp3_list: [],
-    //             img_list: [],
-    //             definition_list: [''],
-    //             isAnswer: '',
-    //             isChecked: '',
-    //             isJudge: '',
-    //             correctInput: ''
-    //         }],
+//         con: [{
+//             con: '',
+//             annotation: "", //注释
+//         }],
+//         pinyin: '',
+//         img_list: [],
+//         mp3_list: [],
+//         fn_list: [{
+//             type: 'astrictNumber',
+//             name: '限制字数',
+//             isFn: false,
+//         }, ],
+//     }
+// },
+// {
+//     type: "hanzi",
+//     name: "汉字模版",
+//     data_structure: {
+//         type: 'hanzi',
+//         name: "汉字模版",
+//         title: "",
+//         option: [{
+//             hanzi: '',
+//             pinyin: '',
+//             mp3_list: [],
+//             img_list: [],
+//             definition_list: [''],
+//             isAnswer: '',
+//             isChecked: '',
+//             isJudge: '',
+//             correctInput: ''
+//         }],
 
-    //         correct: [{
-    //             single: [],
-    //             checkBox: [],
-    //             judge: [],
-    //             input: [],
-    //             spell: []
-    //         }],
-    //         fn_list: [{
-    //                 type: 'def',
-    //                 name: '更多释义',
-    //                 isFn: false,
-    //                 isDisable: false,
-    //             },
-    //             {
-    //                 type: 'record',
-    //                 name: '跟读',
-    //                 isFn: false,
-    //                 isDisable: false,
-    //             },
-    //             {
-    //                 type: 'spell',
-    //                 name: '拼写',
-    //                 isFn: false,
-    //                 isDisable: false,
-    //             },
-    //             {
-    //                 type: 'input',
-    //                 name: '输入',
-    //                 isFn: false,
-    //                 isDisable: false,
-    //             },
-    //             {
-    //                 type: 'copy',
-    //                 name: '摹写',
-    //                 isFn: false,
-    //                 isDisable: false,
-    //             },
-    //             {
-    //                 type: 'single',
-    //                 name: '单选',
-    //                 isFn: false,
-    //                 isDisable: false,
-    //             }, {
-    //                 type: 'checkBox',
-    //                 name: '多选',
-    //                 isFn: false,
-    //                 isDisable: false,
-    //             }, {
-    //                 type: 'judge',
-    //                 name: '判断',
-    //                 isFn: false,
-    //                 isDisable: false,
-    //             },
-    //         ]
-    //     },
-    // },
-    {
-        type: "image",
-        name: "图片控件",
-        list: [{
-                type: 'image_checkBox',
-                name: "图片多选",
-            },
-            {
-                type: 'image_judge',
-                name: "图片判断",
-            },
-            {
-                type: 'image_single',
-                name: "图片单选",
-            },
-            {
-                type: 'image_dobleinput',
-                name: "双输入",
-            },
-            {
-                type: 'image_gdcy',
-                name: "固定词语",
-            },
-            {
-                type: 'image_input',
-                name: "单行输入",
-            },
-            {
-                type: "imgage_image",
-                name: "纯图片",
-            },
-        ],
-    },
+//         correct: [{
+//             single: [],
+//             checkBox: [],
+//             judge: [],
+//             input: [],
+//             spell: []
+//         }],
+//         fn_list: [{
+//                 type: 'def',
+//                 name: '更多释义',
+//                 isFn: false,
+//                 isDisable: false,
+//             },
+//             {
+//                 type: 'record',
+//                 name: '跟读',
+//                 isFn: false,
+//                 isDisable: false,
+//             },
+//             {
+//                 type: 'spell',
+//                 name: '拼写',
+//                 isFn: false,
+//                 isDisable: false,
+//             },
+//             {
+//                 type: 'input',
+//                 name: '输入',
+//                 isFn: false,
+//                 isDisable: false,
+//             },
+//             {
+//                 type: 'copy',
+//                 name: '摹写',
+//                 isFn: false,
+//                 isDisable: false,
+//             },
+//             {
+//                 type: 'single',
+//                 name: '单选',
+//                 isFn: false,
+//                 isDisable: false,
+//             }, {
+//                 type: 'checkBox',
+//                 name: '多选',
+//                 isFn: false,
+//                 isDisable: false,
+//             }, {
+//                 type: 'judge',
+//                 name: '判断',
+//                 isFn: false,
+//                 isDisable: false,
+//             },
+//         ]
+//     },
+// },
+{
+  type: "image",
+  name: "图片控件",
+  list: [{
+    type: 'image_checkBox',
+    name: "图片多选",
+  },
+  {
+    type: 'image_judge',
+    name: "图片判断",
+  },
+  {
+    type: 'image_single',
+    name: "图片单选",
+  },
+  {
+    type: 'image_dobleinput',
+    name: "双输入",
+  },
+  {
+    type: 'image_gdcy',
+    name: "固定词语",
+  },
+  {
+    type: 'image_input',
+    name: "单行输入",
+  },
+  {
+    type: "imgage_image",
+    name: "纯图片",
+  },
+  ],
+},
 
-    // {
-    //     type: "audio_control",
-    //     name: "音频控制条",
-    //     data_structure: {
-    //         type: 'audio_control',
-    //         name: "音频控制条",
-    //         option: [{
-    //             xuhao: '',
-    //             yinbiao: '',
-    //             img_list: [],
-    //             mp3_list: [],
-    //             isAnswer: ''
-    //         }, ],
-    //     }
-    // },
-    // {
-    //     type: "audio_control_easy",
-    //     name: "音频控制条-简易",
-    //     data_structure: {
-    //         type: 'audio_control_easy',
-    //         name: "音频控制条-简易",
-    //         option: [{
-    //             xuhao: '',
-    //             yinbiao: '',
-    //             img_list: [],
-    //             mp3_list: [],
-    //             isAnswer: ''
-    //         }, ],
-    //     }
-    // },
-    {
-        type: "input_record_chs",
-        name: "输入+录音",
-    },
-    {
-        type: "recordHZ_inputPY_chs",
-        name: "读汉字写拼音",
-    },
-    {
-        type: "inputItem_chs",
-        name: "输入选项",
-    },
-    {
-        type: "upload_control_chs",
-        name: "上传控件",
-    },
-    {
-        type: "upload_control_preview_chs",
-        name: "上传控件预览查看",
-    },
-    {
-        type: "inputItem_chs",
-        name: "输入选项",
-    },
-    // {
-    //     type: "switch_control_chs",
-    //     name: "开关控件",
-    // },
-    {
-        type: "record_control",
-        name: "录音控件",
-        list: [{
-                type: 'record_control_mini',
-                name: "录音控件-mini",
-            },
-            {
-                type: 'record_control_normal',
-                name: "录音控件-normal",
-            },
-            {
-                type: 'record_control_pro',
-                name: "录音控件-pro",
-            },
-            {
-                type: 'record_control_promax',
-                name: "录音控件-promax",
-            },
-        ],
-        data_structure: {
-            type: 'record_control',
-            name: "录音控件",
-            option: [{
-                hanzi: '',
-                pinyin: '',
-                mp3_list: [],
-                img_list: [],
-                isAnswer: '',
-                isChecked: '',
-                isJudge: '',
-                correctInput: '',
-            }],
-        },
-    },
-    // {
-    //     type: "pure_input",
-    //     name: "纯输入",
-    //     data_structure: {
-    //         type: 'pure_input',
-    //         name: "纯输入",
-    //         option: [{
-    //             answer: "",
-    //         }, ],
-    //         answer: "",
-    //         record: false, //需要录音
-    //         mp3_list: [],
-    //     }
-    // },
-    // {
-    //     type: "matrixSingle",
-    //     name: "矩阵单选",
-    //     data_structure: {
-    //         type: 'matrixSingle',
-    //         name: "矩阵单选",
-    //         title: "",
-    //         con: [{
-    //                 con: "",
-    //                 Answer: "",
-    //             },
-    //             {
-    //                 con: "",
-    //                 Answer: "",
-    //             },
-    //         ],
-    //         option: [{
-    //                 con: '',
-    //                 pinyin: '',
-    //                 img_list: [],
-    //                 mp3_list: [],
-    //                 isAnswer: ''
-    //             },
-    //             {
-    //                 con: '',
-    //                 pinyin: '',
-    //                 img_list: [],
-    //                 mp3_list: [],
-    //                 isAnswer: ''
-    //             }
-    //         ],
-    //         correct: ["", ""]
-    //     }
-    // },
-    // {
-    //     type: "matrixChckbox",
-    //     name: "矩阵多选",
-    //     data_structure: {
-    //         type: 'matrixChckbox',
-    //         name: "矩阵多选",
-    //         title: "",
+// {
+//     type: "audio_control",
+//     name: "音频控制条",
+//     data_structure: {
+//         type: 'audio_control',
+//         name: "音频控制条",
+//         option: [{
+//             xuhao: '',
+//             yinbiao: '',
+//             img_list: [],
+//             mp3_list: [],
+//             isAnswer: ''
+//         }, ],
+//     }
+// },
+// {
+//     type: "audio_control_easy",
+//     name: "音频控制条-简易",
+//     data_structure: {
+//         type: 'audio_control_easy',
+//         name: "音频控制条-简易",
+//         option: [{
+//             xuhao: '',
+//             yinbiao: '',
+//             img_list: [],
+//             mp3_list: [],
+//             isAnswer: ''
+//         }, ],
+//     }
+// },
+{
+  type: "input_record_chs",
+  name: "输入+录音",
+},
+{
+  type: "recordHZ_inputPY_chs",
+  name: "读汉字写拼音",
+},
+{
+  type: "inputItem_chs",
+  name: "输入选项",
+},
+{
+  type: "upload_control_chs",
+  name: "上传控件",
+},
+{
+  type: "upload_control_preview_chs",
+  name: "上传控件预览查看",
+},
+{
+  type: "inputItem_chs",
+  name: "输入选项",
+},
+// {
+//     type: "switch_control_chs",
+//     name: "开关控件",
+// },
+{
+  type: "record_control",
+  name: "录音控件",
+  list: [{
+    type: 'record_control_mini',
+    name: "录音控件-mini",
+  },
+  {
+    type: 'record_control_normal',
+    name: "录音控件-normal",
+  },
+  {
+    type: 'record_control_pro',
+    name: "录音控件-pro",
+  },
+  {
+    type: 'record_control_promax',
+    name: "录音控件-promax",
+  },
+  ],
+  data_structure: {
+    type: 'record_control',
+    name: "录音控件",
+    option: [{
+      hanzi: '',
+      pinyin: '',
+      mp3_list: [],
+      img_list: [],
+      isAnswer: '',
+      isChecked: '',
+      isJudge: '',
+      correctInput: '',
+    }],
+  },
+},
+// {
+//     type: "pure_input",
+//     name: "纯输入",
+//     data_structure: {
+//         type: 'pure_input',
+//         name: "纯输入",
+//         option: [{
+//             answer: "",
+//         }, ],
+//         answer: "",
+//         record: false, //需要录音
+//         mp3_list: [],
+//     }
+// },
+// {
+//     type: "matrixSingle",
+//     name: "矩阵单选",
+//     data_structure: {
+//         type: 'matrixSingle',
+//         name: "矩阵单选",
+//         title: "",
+//         con: [{
+//                 con: "",
+//                 Answer: "",
+//             },
+//             {
+//                 con: "",
+//                 Answer: "",
+//             },
+//         ],
+//         option: [{
+//                 con: '',
+//                 pinyin: '',
+//                 img_list: [],
+//                 mp3_list: [],
+//                 isAnswer: ''
+//             },
+//             {
+//                 con: '',
+//                 pinyin: '',
+//                 img_list: [],
+//                 mp3_list: [],
+//                 isAnswer: ''
+//             }
+//         ],
+//         correct: ["", ""]
+//     }
+// },
+// {
+//     type: "matrixChckbox",
+//     name: "矩阵多选",
+//     data_structure: {
+//         type: 'matrixChckbox',
+//         name: "矩阵多选",
+//         title: "",
 
-    //         con: [{
-    //                 con: "",
-    //                 AnswerList: [],
-    //             },
-    //             {
-    //                 type: "matrixChekbox",
-    //                 name: "矩阵多选",
-    //                 data_structure: {
-    //                     type: 'matrixChekbox',
-    //                     name: "矩阵多选",
-    //                     con: [{
-    //                             con: "",
-    //                             AnswerList: [],
-    //                         },
-    //                         {
-    //                             con: "",
-    //                             AnswerList: [],
-    //                         },
-    //                     ],
-    //                     option: [{
-    //                             con: '',
-    //                             pinyin: '',
-    //                             img_list: [],
-    //                             mp3_list: [],
-    //                             isAnswer: ''
-    //                         },
-    //                         {
-    //                             con: '',
-    //                             pinyin: '',
-    //                             img_list: [],
-    //                             mp3_list: [],
-    //                             isAnswer: ''
-    //                         }
-    //                     ],
-    //                     correct: [
-    //                         [],
-    //                         []
-    //                     ]
-    //                 }
-    //             },
+//         con: [{
+//                 con: "",
+//                 AnswerList: [],
+//             },
+//             {
+//                 type: "matrixChekbox",
+//                 name: "矩阵多选",
+//                 data_structure: {
+//                     type: 'matrixChekbox',
+//                     name: "矩阵多选",
+//                     con: [{
+//                             con: "",
+//                             AnswerList: [],
+//                         },
+//                         {
+//                             con: "",
+//                             AnswerList: [],
+//                         },
+//                     ],
+//                     option: [{
+//                             con: '',
+//                             pinyin: '',
+//                             img_list: [],
+//                             mp3_list: [],
+//                             isAnswer: ''
+//                         },
+//                         {
+//                             con: '',
+//                             pinyin: '',
+//                             img_list: [],
+//                             mp3_list: [],
+//                             isAnswer: ''
+//                         }
+//                     ],
+//                     correct: [
+//                         [],
+//                         []
+//                     ]
+//                 }
+//             },
 
-    //             {
-    //                 con: '',
-    //                 pinyin: '',
-    //                 img_list: [],
-    //                 mp3_list: [],
-    //                 isAnswer: ''
-    //             }
-    //         ],
-    //         correct: [
-    //             [],
-    //             []
-    //         ]
-    //     }
-    // },
+//             {
+//                 con: '',
+//                 pinyin: '',
+//                 img_list: [],
+//                 mp3_list: [],
+//                 isAnswer: ''
+//             }
+//         ],
+//         correct: [
+//             [],
+//             []
+//         ]
+//     }
+// },
 
-    // {
-    //     type: "text_input_RecoedItem",
-    //     name: "文字+录入+录音条",
-    //     data_structure: {
-    //         type: "text_input_RecoedItem",
-    //         name: "文字+录入+录音条",
-    //         title: "",
-    //         option: [{
-    //             number: "",
-    //             con: "",
-    //             answer: "",
-    //         }, ]
-    //     },
-    // },
-    // {
-    //     type: "dialogue",
-    //     name: "对话题",
-    //     data_structure: {
-    //         type: 'dialogue',
-    //         name: "对话题",
-    //         title: "",
-    //         option: [{
-    //                 roleName: "",
-    //                 site: "left",
-    //                 con: '',
-    //                 number: "",
-    //                 isRecord: "", //是否需要录音
-    //                 mp3_list: [],
-    //                 img_list: [],
-    //                 definition_list: [],
-    //                 AnswerList: [""],
-    //                 isAnswer: '',
-    //                 isChecked: '',
-    //                 judge: '',
-    //                 correctInput: ''
-    //             },
-    //             {
-    //                 roleName: "",
-    //                 site: "left",
-    //                 con: '',
-    //                 number: "",
-    //                 isRecord: "", //是否需要录音
-    //                 mp3_list: [],
-    //                 img_list: [],
-    //                 definition_list: [],
-    //                 AnswerList: [""],
-    //                 isAnswer: '',
-    //                 isChecked: '',
-    //                 judge: '',
-    //                 correctInput: ''
-    //             },
-    //         ],
-    //         fn_list: [
-    //             // {
-    //             //       type: 'def',
-    //             //       name: '更多释义',
-    //             //       isFn: false,
-    //             //   },
-    //             {
-    //                 type: 'record',
-    //                 name: '跟读',
-    //                 isFn: false,
-    //             },
-    //             // {
-    //             //     type: 'spell',
-    //             //     name: '拼写',
-    //             //     isFn: false,
-    //             // },
-    //             {
-    //                 type: 'input',
-    //                 name: '输入',
-    //                 isFn: false,
-    //             },
-    //             // {
-    //             //     type: 'copy',
-    //             //     name: '摹写',
-    //             //     isFn: false,
-    //             // },
-    //             // {
-    //             //     type: 'single',
-    //             //     name: '单选',
-    //             //     isFn: false,
-    //             // }, {
-    //             //     type: 'checkout',
-    //             //     name: '多选',
-    //             //     isFn: false,
-    //             // }, {
-    //             //     type: 'judge',
-    //             //     name: '判断',
-    //             //     isFn: false,
-    //             // },
-    //         ],
-    //         correct: [{
-    //             input: ["", ""],
-    //         }]
-    //     },
-    // },
-    {
-        type: "ligature_chs",
-        name: "连线",
-    },
-    // {
-    //     type: "record",
-    //     name: "录音题",
-    //     data_structure: {
-    //         type: "record",
-    //         name: "录音题",
-    //         title: "",
-    //         option: [{
-    //             mp3_list: [],
-    //             con: "",
-    //             value: "",
-    //         }, ]
-    //     }
-    // },
-    // {
-    //     type: "hearRecord",
-    //     name: "听录音题",
-    //     data_structure: {
-    //         type: "hearRecord",
-    //         name: "听录音题",
+// {
+//     type: "text_input_RecoedItem",
+//     name: "文字+录入+录音条",
+//     data_structure: {
+//         type: "text_input_RecoedItem",
+//         name: "文字+录入+录音条",
+//         title: "",
+//         option: [{
+//             number: "",
+//             con: "",
+//             answer: "",
+//         }, ]
+//     },
+// },
+// {
+//     type: "dialogue",
+//     name: "对话题",
+//     data_structure: {
+//         type: 'dialogue',
+//         name: "对话题",
+//         title: "",
+//         option: [{
+//                 roleName: "",
+//                 site: "left",
+//                 con: '',
+//                 number: "",
+//                 isRecord: "", //是否需要录音
+//                 mp3_list: [],
+//                 img_list: [],
+//                 definition_list: [],
+//                 AnswerList: [""],
+//                 isAnswer: '',
+//                 isChecked: '',
+//                 judge: '',
+//                 correctInput: ''
+//             },
+//             {
+//                 roleName: "",
+//                 site: "left",
+//                 con: '',
+//                 number: "",
+//                 isRecord: "", //是否需要录音
+//                 mp3_list: [],
+//                 img_list: [],
+//                 definition_list: [],
+//                 AnswerList: [""],
+//                 isAnswer: '',
+//                 isChecked: '',
+//                 judge: '',
+//                 correctInput: ''
+//             },
+//         ],
+//         fn_list: [
+//             // {
+//             //       type: 'def',
+//             //       name: '更多释义',
+//             //       isFn: false,
+//             //   },
+//             {
+//                 type: 'record',
+//                 name: '跟读',
+//                 isFn: false,
+//             },
+//             // {
+//             //     type: 'spell',
+//             //     name: '拼写',
+//             //     isFn: false,
+//             // },
+//             {
+//                 type: 'input',
+//                 name: '输入',
+//                 isFn: false,
+//             },
+//             // {
+//             //     type: 'copy',
+//             //     name: '摹写',
+//             //     isFn: false,
+//             // },
+//             // {
+//             //     type: 'single',
+//             //     name: '单选',
+//             //     isFn: false,
+//             // }, {
+//             //     type: 'checkout',
+//             //     name: '多选',
+//             //     isFn: false,
+//             // }, {
+//             //     type: 'judge',
+//             //     name: '判断',
+//             //     isFn: false,
+//             // },
+//         ],
+//         correct: [{
+//             input: ["", ""],
+//         }]
+//     },
+// },
+{
+  type: "ligature_chs",
+  name: "连线",
+},
+// {
+//     type: "record",
+//     name: "录音题",
+//     data_structure: {
+//         type: "record",
+//         name: "录音题",
+//         title: "",
+//         option: [{
+//             mp3_list: [],
+//             con: "",
+//             value: "",
+//         }, ]
+//     }
+// },
+// {
+//     type: "hearRecord",
+//     name: "听录音题",
+//     data_structure: {
+//         type: "hearRecord",
+//         name: "听录音题",
 
-    //         title: "",
-    //         option: [{
-    //             mp3_list: [],
-    //             con: "",
-    //             value: "",
-    //         }, ]
-    //     }
-    // },
-    // {
-    //     type: "sort",
-    //     name: "排序题",
-    // },
-    // {
-    //     type: "blank",
-    //     name: "填空题",
-    // },
-    // {
-    //     type: "annex",
-    //     name: "附件题",
-    // },
-    // {
-    //     type: "dropdown",
-    //     name: "下拉题",
-    // },
-    // {
-    //     type: "drawing",
-    //     name: "画图题",
-    // },
-    // {
-    //     type: "text_item",
-    //     name: "文本条",
-    //     data_structure: {
-    //         type: "text_item",
-    //         name: "文本条",
-    //         title: "",
-    //         option: [{
-    //             number: "",
-    //             con: "",
-    //         }],
-    //         numberList: {
-    //             type: "number",
-    //             name: "每行几个",
-    //             con: "2",
-    //             arr: [{
-    //                     id: 1,
-    //                     value: 1,
-    //                 }, {
-    //                     id: 2,
-    //                     value: 2,
+//         title: "",
+//         option: [{
+//             mp3_list: [],
+//             con: "",
+//             value: "",
+//         }, ]
+//     }
+// },
+// {
+//     type: "sort",
+//     name: "排序题",
+// },
+// {
+//     type: "blank",
+//     name: "填空题",
+// },
+// {
+//     type: "annex",
+//     name: "附件题",
+// },
+// {
+//     type: "dropdown",
+//     name: "下拉题",
+// },
+// {
+//     type: "drawing",
+//     name: "画图题",
+// },
+// {
+//     type: "text_item",
+//     name: "文本条",
+//     data_structure: {
+//         type: "text_item",
+//         name: "文本条",
+//         title: "",
+//         option: [{
+//             number: "",
+//             con: "",
+//         }],
+//         numberList: {
+//             type: "number",
+//             name: "每行几个",
+//             con: "2",
+//             arr: [{
+//                     id: 1,
+//                     value: 1,
+//                 }, {
+//                     id: 2,
+//                     value: 2,
 
-    //                 }, {
-    //                     id: 3,
-    //                     value: 3,
-    //                 },
-    //                 {
-    //                     id: 4,
-    //                     value: 4,
-    //                 },
-    //             ]
-    //         }
-    //     }
-    // },
-    // {
-    //     type: "bg_control",
-    //     name: "背景图控件",
-    //     data_structure: {
-    //         type: 'bg_control',
-    //         name: "背景图控件",
-    //         img_list: [],
-    //     }
-    // },
-    {
-        type: "NumberCombination_chs",
-        name: "数字组合",
-    },
-    {
-        type: "toneSelect_chs",
-        name: "音调选择",
-    },
-    {
-        type: "sudoku_chs",
-        name: "数独",
-    },
-    {
-        type: "text_problem_chs",
-        name: "课文上方的问题",
-    },
-    {
-        type: "newWord_preview_chs",
-        name: "生字展示",
-    },
-    {
-        type: "listen_record_single_syllable_chs",
-        name: "听录音选音节",
-    },
-    // {
-    //     type: "zi_transverse_line_chs",
-    //     name: "字+横线",
-    // },
-    {
-        type: "select_input_chs",
-        name: "选择填空控件",
-    },
-    {
-        type: "play_input_record_chs",
-        name: "播放+输入+录音",
-    },
-    {
-        type: "drag_chs",
-        name: "拖拽",
-    },
-    {
-        type: "sort_chs",
-        name: "排序"
-    },
-    {
-        type: "CourseStart_chs",
-        name: "封面",
-    },
-    {
-        type: "tinydemo_chs",
-        name: "富文本"
-    },
-    {
-        type: "video_chs",
-        name: "视频控件"
-    },
-    {
-        type: "table_chs",
-        name: "表格",
-    },
-    {
-        type: "play_record_chs",
-        name: "播放音频控件",
-    },
-    {
-        type: "upload_pdf_chs",
-        name: "上传pdf",
-    },
+//                 }, {
+//                     id: 3,
+//                     value: 3,
+//                 },
+//                 {
+//                     id: 4,
+//                     value: 4,
+//                 },
+//             ]
+//         }
+//     }
+// },
+// {
+//     type: "bg_control",
+//     name: "背景图控件",
+//     data_structure: {
+//         type: 'bg_control',
+//         name: "背景图控件",
+//         img_list: [],
+//     }
+// },
+{
+  type: "NumberCombination_chs",
+  name: "数字组合",
+},
+{
+  type: "toneSelect_chs",
+  name: "音调选择",
+},
+{
+  type: "sudoku_chs",
+  name: "数独",
+},
+{
+  type: "text_problem_chs",
+  name: "课文上方的问题",
+},
+{
+  type: "newWord_preview_chs",
+  name: "生字展示",
+},
+{
+  type: "listen_record_single_syllable_chs",
+  name: "听录音选音节",
+},
+// {
+//     type: "zi_transverse_line_chs",
+//     name: "字+横线",
+// },
+{
+  type: "select_input_chs",
+  name: "选择填空控件",
+},
+{
+  type: "play_input_record_chs",
+  name: "播放+输入+录音",
+},
+{
+  type: "drag_chs",
+  name: "拖拽",
+},
+{
+  type: "sort_chs",
+  name: "排序"
+},
+{
+  type: "CourseStart_chs",
+  name: "封面",
+},
+{
+  type: "tinydemo_chs",
+  name: "富文本"
+},
+{
+  type: "video_chs",
+  name: "视频控件"
+},
+{
+  type: "table_chs",
+  name: "表格",
+},
+{
+  type: "play_record_chs",
+  name: "播放音频控件",
+},
+{
+  type: "upload_pdf_chs",
+  name: "上传pdf",
+},
 ]
 
 

+ 30 - 11
src/components/Adult/preview/DialogueArticleViewChs/NormalModelChs.vue

@@ -15,7 +15,7 @@
             :mp3="curQue.mp3_list[0].id"
             :getCurTime="getCurTime"
             :mp3Source="curQue.mp3_list[0].source"
-            :width="625"
+            :width="590"
             :ed="ed"
             type="audioLine"
             ref="audioLine"
@@ -25,7 +25,11 @@
       </div>
       <div class="aduioLine-right">
         <span
-          :class="['EN-16', isShowEN ? '' : 'disabled']"
+          :class="['pinyin-16', config.isShowPY ? '' : 'disabled']"
+          @click="changePinyin"
+        ></span>
+        <span
+          :class="['EN-16', config.isShowEN ? '' : 'disabled']"
           @click="changeEN"
         ></span>
       </div>
@@ -108,7 +112,7 @@
                       >
                         <span class="NNPE-words-box">
                           <span
-                            v-if="curQue.pyPosition == 'top'"
+                            v-if="curQue.pyPosition == 'top' && config.isShowPY"
                             class="NNPE-pinyin"
                             :class="[
                               pItem.className ? pItem.className : '',
@@ -135,7 +139,9 @@
                             </template>
                           </span>
                           <span
-                            v-if="curQue.pyPosition == 'bottom'"
+                            v-if="
+                              curQue.pyPosition == 'bottom' && config.isShowPY
+                            "
                             class="NNPE-pinyin"
                             :class="[
                               pItem.className ? pItem.className : '',
@@ -146,7 +152,7 @@
                         </span>
                         <span class="NNPE-words-box">
                           <span
-                            v-if="curQue.pyPosition == 'top'"
+                            v-if="curQue.pyPosition == 'top' && config.isShowPY"
                             class="NNPE-pinyin"
                             :class="[
                               noFont.indexOf(
@@ -175,7 +181,9 @@
                             >{{ item.wordsList[pIndex + 1].chs }}</span
                           >
                           <span
-                            v-if="curQue.pyPosition == 'bottom'"
+                            v-if="
+                              curQue.pyPosition == 'bottom' && config.isShowPY
+                            "
                             class="NNPE-pinyin"
                             :class="[
                               noFont.indexOf(
@@ -191,7 +199,7 @@
                       </template>
                       <template v-else>
                         <span
-                          v-if="curQue.pyPosition == 'top'"
+                          v-if="curQue.pyPosition == 'top' && config.isShowPY"
                           class="NNPE-pinyin"
                           :class="[
                             pItem.padding ? 'padding' : '',
@@ -225,7 +233,9 @@
                           </template>
                         </span>
                         <span
-                          v-if="curQue.pyPosition == 'bottom'"
+                          v-if="
+                            curQue.pyPosition == 'bottom' && config.isShowPY
+                          "
                           class="NNPE-pinyin"
                           :class="[
                             pItem.padding ? 'padding' : '',
@@ -247,7 +257,7 @@
                   </template>
                 </div>
                 <div style="clear: both; overflow: hidden"></div>
-                <div v-if="isShowEN && item.enwords" class="enwords">
+                <div v-if="config.isShowEN && item.enwords" class="enwords">
                   {{ item.enwords }}
                 </div>
               </div>
@@ -303,7 +313,7 @@ export default {
     "bodyLeft",
     "bodyWidth",
     "noFont",
-    "isShowEN",
+    "config",
   ],
   components: {
     AudioLine,
@@ -421,9 +431,17 @@ export default {
   },
   //方法集合
   methods: {
+    //拼音的显示和隐藏
+    changePinyin() {
+      if (this.config.isHasPY) {
+        this.$emit("changeConfig", "isShowPY");
+      }
+    },
     // 英文的显示和隐藏
     changeEN() {
-      this.$emit("changeEN");
+      if (this.config.isHasEN) {
+        this.$emit("changeConfig", "isShowEN");
+      }
     },
     handleWav() {},
     getCurTime(curTime) {
@@ -681,6 +699,7 @@ export default {
       display: flex;
       justify-content: space-between;
       align-items: center;
+      width: 69px;
       height: 40px;
       box-sizing: border-box;
       padding: 0 12px;

+ 31 - 11
src/components/Adult/preview/DialogueArticleViewChs/PhraseModelChs.vue

@@ -15,14 +15,18 @@
             :mp3="curQue.mp3_list[0].id"
             :getCurTime="getCurTime"
             :mp3Source="curQue.mp3_list[0].source"
-            :width="625"
+            :width="590"
             ref="audioLine"
           />
         </template>
       </div>
       <div class="aduioLine-right">
         <span
-          :class="['EN-16', isShowEN ? '' : 'disabled']"
+          :class="['pinyin-16', config.isShowPY ? '' : 'disabled']"
+          @click="changePinyin"
+        ></span>
+        <span
+          :class="['EN-16', config.isShowEN ? '' : 'disabled']"
           @click="changeEN"
         ></span>
       </div>
@@ -84,7 +88,7 @@
                       >
                         <span class="NNPE-words-box">
                           <span
-                            v-if="curQue.pyPosition == 'top'"
+                            v-if="curQue.pyPosition == 'top' && config.isShowPY"
                             class="NNPE-pinyin"
                             :class="[
                               pItem.className ? pItem.className : '',
@@ -102,7 +106,9 @@
                             >{{ pItem.chs }}</span
                           >
                           <span
-                            v-if="curQue.pyPosition == 'bottom'"
+                            v-if="
+                              curQue.pyPosition == 'bottom' && config.isShowPY
+                            "
                             class="NNPE-pinyin"
                             :class="[
                               pItem.className ? pItem.className : '',
@@ -113,7 +119,7 @@
                         </span>
                         <span class="NNPE-words-box">
                           <span
-                            v-if="curQue.pyPosition == 'top'"
+                            v-if="curQue.pyPosition == 'top' && config.isShowPY"
                             class="NNPE-pinyin"
                             style="text-align: left"
                             :class="[
@@ -129,7 +135,9 @@
                             item.wordsList[pIndex + 1].chs
                           }}</span>
                           <span
-                            v-if="curQue.pyPosition == 'bottom'"
+                            v-if="
+                              curQue.pyPosition == 'bottom' && config.isShowPY
+                            "
                             class="NNPE-pinyin"
                             :class="[
                               noFont.indexOf(
@@ -145,7 +153,7 @@
                       </template>
                       <template v-else>
                         <span
-                          v-if="curQue.pyPosition == 'top'"
+                          v-if="curQue.pyPosition == 'top' && config.isShowPY"
                           class="NNPE-pinyin"
                           :class="[
                             pItem.padding ? 'padding' : '',
@@ -167,7 +175,9 @@
                           >{{ pItem.chs }}</span
                         >
                         <span
-                          v-if="curQue.pyPosition == 'bottom'"
+                          v-if="
+                            curQue.pyPosition == 'bottom' && config.isShowPY
+                          "
                           class="NNPE-pinyin"
                           :class="[
                             pItem.padding ? 'padding' : '',
@@ -189,7 +199,7 @@
                   </template>
                 </div>
                 <div style="clear: both; overflow: hidden"></div>
-                <div v-if="isShowEN && item.enwords" class="enwords">
+                <div v-if="config.isShowEN && item.enwords" class="enwords">
                   {{ item.enwords }}
                 </div>
               </div>
@@ -254,7 +264,7 @@ export default {
     "themeColor",
     "noFont",
     "currentTreeID",
-    "isShowEN",
+    "config",
   ],
   components: {
     AudioLine,
@@ -396,10 +406,19 @@ export default {
   },
   //方法集合
   methods: {
+    //拼音的显示和隐藏
+    changePinyin() {
+      if (this.config.isHasPY) {
+        this.$emit("changeConfig", "isShowPY");
+      }
+    },
     // 英文的显示和隐藏
     changeEN() {
-      this.$emit("changeEN");
+      if (this.config.isHasEN) {
+        this.$emit("changeConfig", "isShowEN");
+      }
     },
+
     handleWav() {},
     getCurTime(curTime) {
       this.curTime = curTime;
@@ -671,6 +690,7 @@ export default {
       display: flex;
       justify-content: space-between;
       align-items: center;
+      width: 69px;
       height: 40px;
       box-sizing: border-box;
       padding: 0 12px;

+ 24 - 16
src/components/Adult/preview/DialogueArticleViewChs/Practicechs.vue

@@ -33,11 +33,11 @@
           @click="changeRepeat"
         ></span>
         <span
-          :class="['pinyin-16', isShowPY ? '' : 'disabled']"
+          :class="['pinyin-16', config.isShowPY ? '' : 'disabled']"
           @click="changePinyin"
         ></span>
         <span
-          :class="['EN-16', isShowEN ? '' : 'disabled']"
+          :class="['EN-16', config.isShowEN ? '' : 'disabled']"
           @click="changeEN"
         ></span>
       </div>
@@ -140,7 +140,7 @@
                           <span class="NNPE-words-box">
                             <template v-if="curQue.pyPosition == 'top'">
                               <span
-                                v-if="isShowPY"
+                                v-if="config.isShowPY"
                                 class="NNPE-pinyin"
                                 :class="[
                                   pItem.className ? pItem.className : '',
@@ -155,7 +155,9 @@
                             <span
                               class="NNPE-chs"
                               :class="[
-                                pItem.padding && isShowPY ? 'padding' : '',
+                                pItem.padding && config.isShowPY
+                                  ? 'padding'
+                                  : '',
                                 sentIndex == index ? 'wordBlank' : '',
                               ]"
                             >
@@ -181,7 +183,7 @@
                             </span>
                             <template v-if="curQue.pyPosition == 'bottom'">
                               <span
-                                v-if="isShowPY"
+                                v-if="config.isShowPY"
                                 class="NNPE-pinyin"
                                 :class="[
                                   pItem.className ? pItem.className : '',
@@ -197,7 +199,7 @@
                           <span class="NNPE-words-box">
                             <template v-if="curQue.pyPosition == 'top'">
                               <span
-                                v-if="isShowPY"
+                                v-if="config.isShowPY"
                                 :class="[
                                   'NNPE-pinyin',
                                   sentIndex == index ? 'wordBlank' : '',
@@ -231,7 +233,7 @@
                             </span>
                             <template v-if="curQue.pyPosition == 'bottom'">
                               <span
-                                v-if="isShowPY"
+                                v-if="config.isShowPY"
                                 :class="[
                                   'NNPE-pinyin',
                                   sentIndex == index ? 'wordBlank' : '',
@@ -253,7 +255,7 @@
                               v-if="NumberList.indexOf(pItem.pinyin) < 0"
                             >
                               <span
-                                v-if="isShowPY"
+                                v-if="config.isShowPY"
                                 class="NNPE-pinyin"
                                 :class="[
                                   pItem.padding ? 'padding' : '',
@@ -271,7 +273,7 @@
                             v-if="pItem.chs != '#'"
                             class="NNPE-chs"
                             :class="[
-                              pItem.padding && isShowPY ? 'padding' : '',
+                              pItem.padding && config.isShowPY ? 'padding' : '',
                               sentIndex == index ? 'wordBlank' : '',
                             ]"
                           >
@@ -299,7 +301,7 @@
                               v-if="NumberList.indexOf(pItem.pinyin) < 0"
                             >
                               <span
-                                v-if="isShowPY"
+                                v-if="config.isShowPY"
                                 class="NNPE-pinyin"
                                 :class="[
                                   pItem.padding ? 'padding' : '',
@@ -325,7 +327,7 @@
                 </div>
                 <div style="clear: both; overflow: hidden"></div>
                 <div
-                  v-if="item.enwords && isShowEN"
+                  v-if="item.enwords && config.isShowEN"
                   :class="['enwords', sentIndex == index ? 'wordBlank' : '']"
                 >
                   {{ item.enwords }}
@@ -380,6 +382,9 @@
         :NNPENewWordList="NNPENewWordList"
         :currentTreeID="currentTreeID"
         :isFull="isFull"
+        :config="config"
+        @changePinyin="changePinyin"
+        @changeEN="changeEN"
         @exitFullscreen="exitFullscreen"
         @changeIsFull="changeIsFull"
       />
@@ -401,7 +406,7 @@ export default {
     "colorBox",
     "noFont",
     "themeColor",
-    "isShowEN",
+    "config",
     "NNPENewWordList",
     "currentTreeID",
   ],
@@ -467,7 +472,6 @@ export default {
       ],
       stopAudio: false,
       sentIndex: 0,
-      isShowPY: true,
       isRepeat: false,
       currSent: null, //当前句子的时间
       isRecord: false,
@@ -725,13 +729,17 @@ export default {
     handleChangeStopAudio() {
       this.stopAudio = false;
     },
-    //拼音的显示隐藏
+    //拼音的显示隐藏
     changePinyin() {
-      this.isShowPY = !this.isShowPY;
+      if (this.config.isHasPY) {
+        this.$emit("changeConfig", "isShowPY");
+      }
     },
     // 英文的显示和隐藏
     changeEN() {
-      this.$emit("changeEN");
+      if (this.config.isHasEN) {
+        this.$emit("changeConfig", "isShowEN");
+      }
     },
     // 单句是否重复播放
     changeRepeat() {

+ 30 - 11
src/components/Adult/preview/DialogueArticleViewChs/WordModelChs.vue

@@ -15,14 +15,18 @@
             :mp3="curQue.mp3_list[0].id"
             :getCurTime="getCurTime"
             :mp3Source="curQue.mp3_list[0].source"
-            :width="625"
+            :width="590"
             ref="audioLine"
           />
         </template>
       </div>
       <div class="aduioLine-right">
         <span
-          :class="['EN-16', isShowEN ? '' : 'disabled']"
+          :class="['pinyin-16', config.isShowPY ? '' : 'disabled']"
+          @click="changePinyin"
+        ></span>
+        <span
+          :class="['EN-16', config.isShowEN ? '' : 'disabled']"
           @click="changeEN"
         ></span>
       </div>
@@ -79,7 +83,7 @@
                       >
                         <span class="NNPE-words-box">
                           <span
-                            v-if="curQue.pyPosition == 'top'"
+                            v-if="curQue.pyPosition == 'top' && config.isShowPY"
                             class="NNPE-pinyin"
                             :class="[
                               pItem.className ? pItem.className : '',
@@ -100,7 +104,9 @@
                             >{{ pItem.chs }}</span
                           >
                           <span
-                            v-if="curQue.pyPosition == 'bottom'"
+                            v-if="
+                              curQue.pyPosition == 'bottom' && config.isShowPY
+                            "
                             class="NNPE-pinyin"
                             :class="[
                               pItem.className ? pItem.className : '',
@@ -111,7 +117,7 @@
                         </span>
                         <span class="NNPE-words-box">
                           <span
-                            v-if="curQue.pyPosition == 'top'"
+                            v-if="curQue.pyPosition == 'top' && config.isShowPY"
                             class="NNPE-pinyin"
                             :class="[
                               noFont.indexOf(
@@ -127,7 +133,9 @@
                             item.wordsList[pIndex + 1].chs
                           }}</span>
                           <span
-                            v-if="curQue.pyPosition == 'bottom'"
+                            v-if="
+                              curQue.pyPosition == 'bottom' && config.isShowPY
+                            "
                             class="NNPE-pinyin"
                             :class="[
                               noFont.indexOf(
@@ -143,7 +151,7 @@
                       </template>
                       <template v-else>
                         <span
-                          v-if="curQue.pyPosition == 'top'"
+                          v-if="curQue.pyPosition == 'top' && config.isShowPY"
                           class="NNPE-pinyin"
                           :class="[
                             pItem.padding ? 'padding' : '',
@@ -167,7 +175,9 @@
                           >{{ pItem.chs }}</span
                         >
                         <span
-                          v-if="curQue.pyPosition == 'bottom'"
+                          v-if="
+                            curQue.pyPosition == 'bottom' && config.isShowPY
+                          "
                           class="NNPE-pinyin"
                           :class="[
                             pItem.padding ? 'padding' : '',
@@ -189,7 +199,7 @@
                   </template>
                 </div>
                 <div style="clear: both; overflow: hidden"></div>
-                <div v-if="isShowEN && item.enwords" class="enwords">
+                <div v-if="config.isShowEN && item.enwords" class="enwords">
                   {{ item.enwords }}
                 </div>
               </div>
@@ -250,7 +260,7 @@ export default {
     "themeColor",
     "noFont",
     "currentTreeID",
-    "isShowEN",
+    "config",
   ],
   components: {
     AudioLine,
@@ -395,9 +405,17 @@ export default {
   },
   //方法集合
   methods: {
+    //拼音的显示和隐藏
+    changePinyin() {
+      if (this.config.isHasPY) {
+        this.$emit("changeConfig", "isShowPY");
+      }
+    },
     // 英文的显示和隐藏
     changeEN() {
-      this.$emit("changeEN");
+      if (this.config.isHasEN) {
+        this.$emit("changeConfig", "isShowEN");
+      }
     },
     handleWav() {},
     getCurTime(curTime) {
@@ -692,6 +710,7 @@ export default {
       display: flex;
       justify-content: space-between;
       align-items: center;
+      width: 69px;
       height: 40px;
       box-sizing: border-box;
       padding: 0 12px;

+ 42 - 9
src/components/Adult/preview/DialogueArticleViewChs/index.vue

@@ -66,8 +66,8 @@
         :NNPEAnnotationList="NNPEAnnotationList"
         :themeColor="themeColor"
         :noFont="noFont"
-        :isShowEN="isShowEN"
-        @changeEN="changeEN"
+        :config="config"
+        @changeConfig="changeConfig"
         v-if="!showPhrases && !showPractice && !showWord"
       />
       <PhraseModel
@@ -81,8 +81,8 @@
         :noFont="noFont"
         :currentTreeID="currentTreeID"
         :bodyLeft="bodyLeft"
-        :isShowEN="isShowEN"
-        @changeEN="changeEN"
+        :config="config"
+        @changeConfig="changeConfig"
         v-if="showPhrases"
       />
       <Practice
@@ -92,10 +92,10 @@
         :colorBox="colorBox"
         :themeColor="themeColor"
         :noFont="noFont"
-        :isShowEN="isShowEN"
         :currentTreeID="currentTreeID"
         :NNPENewWordList="NNPENewWordList"
-        @changeEN="changeEN"
+        :config="config"
+        @changeConfig="changeConfig"
         v-if="showPractice"
       />
       <WordModel
@@ -109,8 +109,8 @@
         :themeColor="themeColor"
         :noFont="noFont"
         :currentTreeID="currentTreeID"
-        :isShowEN="isShowEN"
-        @changeEN="changeEN"
+        :config="config"
+        @changeConfig="changeConfig"
         v-if="showWord"
       />
     </div>
@@ -147,7 +147,12 @@ export default {
       bodyWidth: 0,
       resColorArr: [],
       noFont: ["~", "!", "@", "#", "$", "%", "^", "&", "*", "(", ")", "/"],
-      isShowEN: true,
+      config: {
+        isShowEN: false,
+        isHasEN: false,
+        isShowPY: false,
+        isHasPY: false,
+      },
     };
   },
   computed: {
@@ -175,10 +180,16 @@ export default {
         element.webkitRequestFullScreen();
       }
     },
+    changeConfig(obj) {
+      this.config[obj] = !this.config[obj];
+    },
     // 英文的显示和隐藏
     changeEN() {
       this.isShowEN = !this.isShowEN;
     },
+    changePY() {
+      this.isShowPY = !this.isShowPY;
+    },
     // 处理字体大小
     handleFontsize(symbol) {
       if (symbol == "+") {
@@ -200,6 +211,13 @@ export default {
       this.showPreview = false;
     },
     articleFullScreen() {},
+    handleObj(list) {
+      let pinyin = "";
+      list.forEach((item) => {
+        pinyin += item.pinyin;
+      });
+      return pinyin;
+    },
   },
   //生命周期 - 创建完成(可以访问当前this实例)
   created() {},
@@ -211,6 +229,21 @@ export default {
       this.$nextTick(() => {
         this.bodyLeft = this.$refs.ArticleViewbody.getBoundingClientRect().left;
       });
+      for (let i = 0; i < this.curQue.detail.length; i++) {
+        let enStr = this.curQue.detail[i].sentencesEn.join("");
+        if (enStr) {
+          this.config.isShowEN = true;
+          this.config.isHasEN = true;
+        }
+        let pinyin = this.handleObj(this.curQue.detail[i].wordsList);
+        if (pinyin) {
+          this.config.isShowPY = true;
+          this.config.isHasPY = true;
+        }
+        if (enStr && pinyin) {
+          break;
+        }
+      }
     }
     console.log(this.NNPENewWordList);
   },

+ 125 - 38
src/components/Adult/preview/Voicefullscreen.vue

@@ -9,36 +9,63 @@
       <div :class="[isTopShow ? 'voicefull-top-show' : 'voicefull-top-hidden']">
         <div class="top-left">
           <div :class="['select-bg', bgIndex == 1 ? 'select-bg-blue' : '']">
-            <div :class="['bg-white-box', bgIndex == 0 ? 'active' : '']">
-              <span
-                :class="['bg-white', bgIndex == 0 ? 'active' : '']"
-                @click="changeBg(0)"
-              ></span>
-            </div>
             <div :class="['bg-green-box', bgIndex == 1 ? 'active' : '']">
               <span
                 :class="['bg-green', bgIndex == 1 ? 'active' : '']"
                 @click="changeBg(1)"
               ></span>
             </div>
+            <div :class="['bg-white-box', bgIndex == 0 ? 'active' : '']">
+              <span
+                :class="['bg-white', bgIndex == 0 ? 'active' : '']"
+                @click="changeBg(0)"
+              ></span>
+            </div>
           </div>
           <div
             :class="['set-fontSize', bgIndex == 1 ? 'set-fontSize-green' : '']"
           >
-            <span
-              :class="[
-                'font-jian-black',
-                bgIndex == 1 ? 'font-jian-yellow' : '',
-              ]"
-              @click="setFontSize('-')"
-            ></span>
+            <template v-if="hzSize >= 34">
+              <span
+                :class="[
+                  'font-jian-black',
+                  bgIndex == 1 ? 'font-jian-yellow' : '',
+                ]"
+                @click="setFontSize('-')"
+              ></span>
+            </template>
+            <template v-else>
+              <span
+                :class="[
+                  'font-jian-black',
+                  bgIndex == 1
+                    ? 'font-jian-yellow-disabled'
+                    : 'font-jian-white-disabled',
+                ]"
+              ></span>
+            </template>
             <span
               :class="['font-img-black', bgIndex == 1 ? 'font-img-yellow' : '']"
             ></span>
-            <span
-              :class="['font-jia-black', bgIndex == 1 ? 'font-jia-yellow' : '']"
-              @click="setFontSize('+')"
-            ></span>
+            <template v-if="hzSize <= 76">
+              <span
+                :class="[
+                  'font-jia-black',
+                  bgIndex == 1 ? 'font-jia-yellow' : '',
+                ]"
+                @click="setFontSize('+')"
+              ></span>
+            </template>
+            <template v-else>
+              <span
+                :class="[
+                  'font-jia-black',
+                  bgIndex == 1
+                    ? 'font-jia-yellow-disabled'
+                    : 'font-jia-white-disabled',
+                ]"
+              ></span>
+            </template>
           </div>
           <div
             :class="['op-btn', bgIndex == 1 ? 'op-btn-green' : '']"
@@ -91,32 +118,32 @@
           </div>
           <div
             :class="['op-btn', bgIndex == 1 ? 'op-btn-green' : '']"
-            @click="changeStatus('isShowPY')"
+            @click="changePinyin"
           >
             <span
               :class="[
                 'pinyin-icon',
-                !isShowPY ? 'disabled' : '',
-                isShowPY && bgIndex == 1 ? 'pinyin-icon-yellow' : '',
+                !config.isShowPY ? 'disabled' : '',
+                config.isShowPY && bgIndex == 1 ? 'pinyin-icon-yellow' : '',
               ]"
             ></span>
           </div>
           <div
             :class="['op-btn', bgIndex == 1 ? 'op-btn-green' : '']"
-            @click="changeStatus('isShowEN')"
+            @click="changeEN"
           >
             <span
               :class="[
                 'en-icon',
                 !enwords ? 'disabled' : '',
-                !isShowEN ? 'disabled' : '',
-                isShowEN && bgIndex == 1 ? 'en-icon-yellow' : '',
+                !config.isShowEN ? 'disabled' : '',
+                config.isShowEN && bgIndex == 1 ? 'en-icon-yellow' : '',
               ]"
             ></span>
           </div>
           <div
             :class="['op-btn', bgIndex == 1 ? 'op-btn-green' : '']"
-            @click="addColl('isColl')"
+            @click="handleColl"
           >
             <span
               :class="[
@@ -177,7 +204,7 @@
                   <span class="NNPE-words-box">
                     <template v-if="curQue.pyPosition == 'top'">
                       <span
-                        v-if="isShowPY"
+                        v-if="config.isShowPY"
                         class="NNPE-pinyin"
                         :class="[
                           pItem.className ? pItem.className : '',
@@ -191,7 +218,7 @@
                     <span
                       class="NNPE-chs"
                       :class="[
-                        pItem.padding && isShowPY ? 'padding' : '',
+                        pItem.padding && config.isShowPY ? 'padding' : '',
                         curQue.pyPosition == 'top' ? 'bottom' : '',
                       ]"
                     >
@@ -226,7 +253,7 @@
                     </span>
                     <template v-if="curQue.pyPosition == 'bottom'">
                       <span
-                        v-if="isShowPY"
+                        v-if="config.isShowPY"
                         class="NNPE-pinyin bottom"
                         :class="[
                           pItem.className ? pItem.className : '',
@@ -241,7 +268,7 @@
                   <span class="NNPE-words-box">
                     <template v-if="curQue.pyPosition == 'top'">
                       <span
-                        v-if="isShowPY"
+                        v-if="config.isShowPY"
                         :class="[
                           'NNPE-pinyin',
                           noFont.indexOf(item[pIndex + 1].pinyin) > -1
@@ -280,7 +307,7 @@
                     </span>
                     <template v-if="curQue.pyPosition == 'bottom'">
                       <span
-                        v-if="isShowPY"
+                        v-if="config.isShowPY"
                         :class="[
                           'NNPE-pinyin',
                           noFont.indexOf(item[pIndex + 1].pinyin) > -1
@@ -299,7 +326,7 @@
                   <template v-if="curQue.pyPosition == 'top'">
                     <template v-if="NumberList.indexOf(pItem.pinyin) < 0">
                       <span
-                        v-if="isShowPY"
+                        v-if="config.isShowPY"
                         class="NNPE-pinyin"
                         :class="[
                           pItem.padding ? 'padding' : '',
@@ -316,7 +343,7 @@
                     v-if="pItem.chs != '#'"
                     class="NNPE-chs"
                     :class="[
-                      pItem.padding && isShowPY ? 'padding' : '',
+                      pItem.padding && config.isShowPY ? 'padding' : '',
                       curQue.pyPosition == 'top' ? 'bottom' : '',
                     ]"
                   >
@@ -352,7 +379,7 @@
                   <template v-if="curQue.pyPosition == 'bottom'">
                     <template v-if="NumberList.indexOf(pItem.pinyin) < 0">
                       <span
-                        v-if="isShowPY"
+                        v-if="config.isShowPY"
                         class="NNPE-pinyin bottom"
                         :class="[
                           pItem.padding ? 'padding' : '',
@@ -380,7 +407,7 @@
         <div style="clear: both; overflow: hidden"></div>
 
         <div
-          v-if="enwords && isShowEN"
+          v-if="enwords && config.isShowEN"
           :class="['enwords', bgIndex == 1 ? 'enwords-green' : '']"
           :style="{ fontSize: enSize + 'px' }"
         >
@@ -516,20 +543,19 @@ export default {
     "themeColor",
     "NNPENewWordList",
     "currentTreeID",
+    "config",
   ],
   data() {
     return {
       pySize: 32,
       hzSize: 48,
       enSize: 24,
-      bgIndex: 0,
+      bgIndex: 1,
       maxTime: 0,
       item: null,
       bg: 0,
       ed: 0,
-      isShowPY: true,
       isRepeat: false,
-      isShowEN: true,
       NumberList: [
         "①",
         "②",
@@ -577,7 +603,7 @@ export default {
       isWordPlay: false,
       curWordTime: 0,
       isPlaying: false,
-      isAuto: true,
+      isAuto: false,
       key: "isRepeat",
       isKeyboard: true,
       isTopShow: false,
@@ -681,6 +707,14 @@ export default {
     playChange(bool) {
       this.isPlaying = bool;
     },
+    handleColl() {
+      let _this = this;
+      if (_this.isCollArr[_this.curSentIndex]) {
+        _this.cancleColl();
+      } else {
+        _this.addColl();
+      }
+    },
     //添加收藏
     addColl() {
       let Bookdetail = sessionStorage.getItem("Bookdetail");
@@ -721,6 +755,29 @@ export default {
         this.$message.success("收藏成功!");
       });
     },
+    //取消收藏
+    cancleColl() {
+      let text = "";
+      this.item.forEach((item) => {
+        if (item.chs != "#") {
+          text += item.chs;
+        }
+      });
+      let MethodName = "order-collection_manager-CancelMyGoodsCollection_WS";
+      let data = {
+        goods_type: 502,
+        goods_list: [
+          {
+            goods_id: this.currentTreeID, //课件的id
+            sentence_text: text,
+          },
+        ],
+      };
+      LearnWebSI(MethodName, data).then((res) => {
+        this.$set(this.isCollArr, this.curSentIndex, false);
+        this.$message.success("取消成功!");
+      });
+    },
     showPrevNext(bool, key) {
       this[key] = bool;
     },
@@ -749,7 +806,7 @@ export default {
       this.getSentence();
     },
     changeStatus(key) {
-      if (key == "isShowEN") {
+      if (key == "config.isShowEN") {
         if (this.enwords) {
           this[key] = !this[key];
         }
@@ -757,6 +814,12 @@ export default {
         this[key] = !this[key];
       }
     },
+    changePinyin() {
+      this.$emit("changePinyin");
+    },
+    changeEN() {
+      this.$emit("changeEN");
+    },
     setStatus() {
       let _this = this;
       if (_this.key == "isRepeat") {
@@ -1195,6 +1258,18 @@ export default {
             background-size: 100% 100%;
             cursor: pointer;
           }
+          &-white-disabled {
+            background: url("../../../assets/NPC/jian-white-disabled.png")
+              no-repeat left top;
+            background-size: 100% 100%;
+            cursor: pointer;
+          }
+          &-yellow-disabled {
+            background: url("../../../assets/NPC/jian-yellow-disabled.png")
+              no-repeat left top;
+            background-size: 100% 100%;
+            cursor: pointer;
+          }
         }
         &.font-img {
           &-black {
@@ -1221,6 +1296,18 @@ export default {
             background-size: 100% 100%;
             cursor: pointer;
           }
+          &-white-disabled {
+            background: url("../../../assets/NPC/jia-white-disabled.png")
+              no-repeat left top;
+            background-size: 100% 100%;
+            cursor: pointer;
+          }
+          &-yellow-disabled {
+            background: url("../../../assets/NPC/jia-yellow-disabled.png")
+              no-repeat left top;
+            background-size: 100% 100%;
+            cursor: pointer;
+          }
         }
       }
     }

+ 17 - 17
src/components/Adult/preview/components/FreewriteLettle.vue

@@ -23,7 +23,7 @@
           :themeColor="themeColor"
           ref="freewrite"
         /> -->
-        <div
+        <!-- <div
           v-if="data.history"
           @click.stop="play"
           :class="[
@@ -36,7 +36,7 @@
               ? 'brown-border'
               : 'red-border',
           ]"
-        ></div>
+        ></div> -->
         <template v-if="!hasPlay && data.strokes_image_url">
           <img class="img" :src="data.strokes_image_url" alt="" />
         </template>
@@ -53,8 +53,8 @@
         />
       </div>
       <ul class="nav-list">
-        <li @click="resetHuahua()">重写</li>
-        <li @click="handleWriteImg">确定</li>
+        <li @click="resetHuahua()">播放</li>
+        <li @click="handleWriteImg">保存</li>
       </ul>
     </div>
   </div>
@@ -334,19 +334,19 @@ export default {
       .img {
         position: absolute;
       }
-      .strock-play-box {
-        position: absolute;
-        width: 32px;
-        height: 32px;
-        background: #fff
-          url("../../../../assets/NPC/strock-play-red-click-big.png") center
-          no-repeat;
-        background-size: 100% 100%;
-        cursor: pointer;
-        right: 0;
-        top: 0;
-        z-index: 2;
-      }
+      // .strock-play-box {
+      //   position: absolute;
+      //   width: 32px;
+      //   height: 32px;
+      //   background: #fff
+      //     url("../../../../assets/NPC/strock-play-red-click-big.png") center
+      //     no-repeat;
+      //   background-size: 100% 100%;
+      //   cursor: pointer;
+      //   right: 0;
+      //   top: 0;
+      //   z-index: 2;
+      // }
     }
     .footer {
       position: absolute;

+ 21 - 3
src/components/Adult/preview/components/Wordcard.vue

@@ -109,7 +109,7 @@
     </template>
     <div class="bwc-more-intp" @click="viewIntp">查看更多</div>
     <div class="bwc-footer">
-      <button class="bwc-btn" @click="addColl">
+      <button class="bwc-btn" @click="handleColl">
         <template v-if="!collFlag">
           <img
             :src="
@@ -138,7 +138,7 @@
             class="practice-icon"
           />
         </template>
-        收藏
+        {{ collFlag ? "已收藏" : "收藏" }}
       </button>
       <button
         class="bwc-btn bwc-btn2"
@@ -224,6 +224,14 @@ export default {
   },
   //方法集合
   methods: {
+    handleColl() {
+      let _this = this;
+      if (_this.collFlag) {
+        _this.cancleColl();
+      } else {
+        _this.addColl();
+      }
+    },
     addColl() {
       let Bookdetail = sessionStorage.getItem("Bookdetail");
       if (Bookdetail) {
@@ -248,12 +256,22 @@ export default {
         this.$message.success("收藏成功!");
       });
     },
+    //取消收藏
     cancleColl() {
       let MethodName = "order-collection_manager-CancelMyGoodsCollection_WS";
       let data = {
         goods_type: 501,
-        goods_list: [],
+        goods_list: [
+          {
+            goods_id: this.currentTreeID, //课件的id
+            new_word: this.word.detail.new_word,
+          },
+        ],
       };
+      LearnWebSI(MethodName, data).then((res) => {
+        this.collFlag = false;
+        this.$message.success("取消成功!");
+      });
     },
     async writeWord(words, pinyin) {
       let _this = this;

+ 33 - 0
src/views/courseList.vue

@@ -173,6 +173,22 @@
             name="name_english"
           />
         </el-form-item>
+        <el-form-item label="教材类型" label-width="90px" prop="type_id">
+          <!-- -->
+          <el-select
+            ref="typeSelects"
+            v-model="formDialog.type_id"
+            name="bookType"
+            placeholder="请选择教材类型"
+          >
+            <el-option
+              v-for="(item, index) in typeList"
+              :key="'type' + index"
+              :label="item.name"
+              :value="item.id"
+            />
+          </el-select>
+        </el-form-item>
         <el-form-item
           class="label-input"
           label="作者"
@@ -369,6 +385,7 @@ export default {
         id: "",
         publisher: "",
         theme_color: "",
+        type_id: "",
       },
       agencyList: [
         {
@@ -404,6 +421,9 @@ export default {
           { required: true, trigger: "blur", validator: validateNull },
         ],
         org_id: [{ required: true, message: "请选择机构", trigger: "change" }],
+        type_id: [
+          { required: true, message: "请选择教材类型", trigger: "change" },
+        ],
         price: [{ required: true, validator: validatePrice }],
       },
       loading: false,
@@ -433,6 +453,7 @@ export default {
         },
       ],
       diaMyOrgList: [],
+      typeList: [],
     };
   },
   computed: {
@@ -461,6 +482,7 @@ export default {
   },
   mounted() {
     this.getList();
+    this.getTypeList();
     this.getMyOrgList();
     this.getMyOrgListAgree();
     // this.createOptions(1);
@@ -537,6 +559,7 @@ export default {
         id: "",
         publisher: "",
         theme_color: "",
+        type_id: "",
       };
       this.agency = "";
       this.fileList = [];
@@ -676,6 +699,15 @@ export default {
         }
       });
     },
+    // 教材类型列表
+    getTypeList() {
+      let MethodName = "dict_manager-GetBookTypeList";
+      let data = {};
+      getContentFile(MethodName, data).then((res) => {
+        this.typeList = res.type_list;
+        console.log(this.typeList);
+      });
+    },
     // 处理发布状态
     handleStatus(row) {
       if (row) {
@@ -771,6 +803,7 @@ export default {
             publisher: res.publisher,
             theme_color: res.theme_color,
             edition: res.edition,
+            type_id: res.type_id,
           };
           sessionStorage.setItem("Bookdetail", JSON.stringify(this.formDialog));
           if (res.picture_url) {

+ 2 - 2
vue.config.js

@@ -43,8 +43,8 @@ module.exports = {
       // change xxx-api/login => mock/login
       // detail: https://cli.vuejs.org/config/#devserver-proxy
       [process.env.VUE_APP_BASE_API]: {
-        target: `http://gcls.utschool.cn/`,
-        // target: `http://gcls.helxsoft.cn/`,
+        //target: `http://gcls.utschool.cn/`,
+        target: `http://gcls.helxsoft.cn/`,
         changeOrigin: true,
         pathRewrite: {
           ['^' + process.env.VUE_APP_BASE_API]: ''