CharacterSetting.vue 5.5 KB

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