CharacterSetting.vue 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173
  1. <template>
  2. <div>
  3. <el-form :model="property" label-width="72px" label-position="left">
  4. <SerialNumber :property="property" />
  5. <el-form-item label="汉字框">
  6. <el-radio-group v-model="property.frame_type">
  7. <el-radio v-for="{ value, label } in frameList" :key="value" :label="value" :value="value">
  8. {{ label }}
  9. </el-radio>
  10. </el-radio-group>
  11. </el-form-item>
  12. <el-form-item label="框颜色">
  13. <el-color-picker v-model="property.frame_color" />
  14. </el-form-item>
  15. <el-form-item label="框大小">
  16. <el-radio-group v-model="property.frame_size">
  17. <el-radio v-for="{ value, label } in frameSizeList" :key="value" :label="value">
  18. {{ label }}
  19. </el-radio>
  20. </el-radio-group>
  21. </el-form-item>
  22. <el-divider />
  23. <el-form-item v-if="property.model === 'miao'" label="描红格">
  24. <el-input-number v-model="property.miao_number" :min="0" :step="1" />
  25. </el-form-item>
  26. <el-form-item v-if="property.model === 'miao'" label="书写格">
  27. <el-input-number v-model="property.write_number" :min="0" :step="1" />
  28. </el-form-item>
  29. <el-divider v-if="property.model === 'miao'" />
  30. <el-form-item v-if="property.model === 'miao'" label="错误提示">
  31. <el-radio-group v-model="property.is_enable_error">
  32. <el-radio v-for="{ value, label } in showList" :key="value" :label="value">
  33. {{ label }}
  34. </el-radio>
  35. </el-radio-group>
  36. </el-form-item>
  37. <el-form-item label="笔迹回放">
  38. <el-radio-group v-model="property.is_enable_play_back">
  39. <el-radio v-for="{ value, label } in showList" :key="value" :label="value">
  40. {{ label }}
  41. </el-radio>
  42. </el-radio-group>
  43. </el-form-item>
  44. <el-form-item label="笔画动画">
  45. <el-radio-group v-model="property.is_enable_stroke">
  46. <el-radio v-for="{ value, label } in showList" :key="value" :label="value">
  47. {{ label }}
  48. </el-radio>
  49. </el-radio-group>
  50. </el-form-item>
  51. <el-form-item label="拼音">
  52. <el-radio-group v-model="property.view_pinyin">
  53. <el-radio v-for="{ value, label } in showList" :key="value" :label="value">
  54. {{ label }}
  55. </el-radio>
  56. </el-radio-group>
  57. </el-form-item>
  58. <el-form-item label="释义">
  59. <el-radio-group v-model="property.is_enable_shiyi">
  60. <el-radio v-for="{ value, label } in showList" :key="value" :label="value">
  61. {{ label }}
  62. </el-radio>
  63. </el-radio-group>
  64. </el-form-item>
  65. <el-form-item label="读音">
  66. <el-radio-group v-model="property.is_enable_voice">
  67. <el-radio v-for="{ value, label } in showList" :key="value" :label="value">
  68. {{ label }}
  69. </el-radio>
  70. </el-radio-group>
  71. </el-form-item>
  72. <el-form-item v-if="property.is_enable_voice === 'true'" label="读音">
  73. <el-select v-model="property.audio_generation_method" placeholder="请选择">
  74. <el-option v-for="{ value, label } in audioGenerationMethodList" :key="value" :label="label" :value="value" />
  75. </el-select>
  76. </el-form-item>
  77. <template v-if="property.audio_generation_method === 'auto'">
  78. <el-form-item label="音色">
  79. <el-select v-model="property.voice_type" placeholder="请选择">
  80. <el-option
  81. v-for="{ voice_type, name } in voice_type_list"
  82. :key="voice_type"
  83. :label="name"
  84. :value="voice_type"
  85. />
  86. </el-select>
  87. </el-form-item>
  88. <el-form-item label="风格情感">
  89. <el-select v-model="property.emotion">
  90. <el-option v-for="{ emotion, name } in emotion_list" :key="emotion" :label="name" :value="emotion" />
  91. </el-select>
  92. </el-form-item>
  93. <el-form-item label="语速">
  94. <el-select v-model="property.speed_ratio">
  95. <el-option v-for="{ value, label } in speedRatioList" :key="value" :label="label" :value="value" />
  96. </el-select>
  97. </el-form-item>
  98. </template>
  99. <el-form-item label="语音作答">
  100. <el-radio-group v-model="property.is_enable_voice_answer">
  101. <el-radio v-for="{ value, label } in switchOption" :key="value" :label="value" :value="value">
  102. {{ label }}
  103. </el-radio>
  104. </el-radio-group>
  105. </el-form-item>
  106. <AddAnswer />
  107. </el-form>
  108. </div>
  109. </template>
  110. <script>
  111. import SettingMixin from '@/views/book/courseware/create/components/common/SettingMixin';
  112. import {
  113. getCharacterProperty,
  114. switchOption,
  115. funList,
  116. showList,
  117. isEnable,
  118. frameList,
  119. audioGenerationMethodList,
  120. frameSizeList,
  121. } from '@/views/book/courseware/data/character';
  122. import { GetTextToAudioConfParamList } from '@/api/app';
  123. import { speedRatioList } from '@/views/book/courseware/data/common';
  124. export default {
  125. name: 'CharacterSetting',
  126. mixins: [SettingMixin],
  127. data() {
  128. return {
  129. audioGenerationMethodList,
  130. property: getCharacterProperty(),
  131. switchOption,
  132. isEnable,
  133. funList,
  134. showList,
  135. frameList,
  136. voice_type_list: [],
  137. emotion_list: [],
  138. speedRatioList,
  139. frameSizeList,
  140. };
  141. },
  142. created() {
  143. this.getTextToAudioConfParamList();
  144. },
  145. methods: {
  146. // 得到文本转音频的配置参数列表
  147. getTextToAudioConfParamList() {
  148. GetTextToAudioConfParamList()
  149. .then(({ status, voice_type_list, emotion_list }) => {
  150. if (status === 1) {
  151. this.voice_type_list = voice_type_list;
  152. this.emotion_list = emotion_list;
  153. }
  154. })
  155. .catch(() => {});
  156. },
  157. },
  158. };
  159. </script>
  160. <style lang="scss" scoped>
  161. @use '@/styles/mixin.scss' as *;
  162. .el-form {
  163. @include setting-base;
  164. }
  165. </style>