FillSetting.vue 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
  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.arrange_type">
  7. <el-radio v-for="{ value, label } in arrangeTypeList" :key="value" :label="value">
  8. {{ label }}
  9. </el-radio>
  10. </el-radio-group>
  11. </el-form-item>
  12. <el-form-item label="填空方式">
  13. <el-radio-group v-model="property.fill_type">
  14. <el-radio v-for="{ value, label } in fillTypeList" :key="value" :label="value">
  15. {{ label }}
  16. </el-radio>
  17. </el-radio-group>
  18. </el-form-item>
  19. <el-form-item label="音频位置">
  20. <el-radio-group v-model="property.audio_position">
  21. <el-radio v-for="{ value, label } in audioPositionList" :key="value" :label="value">
  22. {{ label }}
  23. </el-radio>
  24. </el-radio-group>
  25. </el-form-item>
  26. <el-divider />
  27. <el-form-item label="读音">
  28. <el-select v-model="property.audio_generation_method" placeholder="请选择">
  29. <el-option v-for="{ value, label } in audioGenerationMethodList" :key="value" :label="label" :value="value" />
  30. </el-select>
  31. </el-form-item>
  32. <template v-if="property.audio_generation_method === 'auto'">
  33. <el-form-item label="音色">
  34. <el-select v-model="property.voice_type" placeholder="请选择">
  35. <el-option
  36. v-for="{ voice_type, name } in voice_type_list"
  37. :key="voice_type"
  38. :label="name"
  39. :value="voice_type"
  40. />
  41. </el-select>
  42. </el-form-item>
  43. <el-form-item label="风格情感">
  44. <el-select v-model="property.emotion">
  45. <el-option v-for="{ emotion, name } in emotion_list" :key="emotion" :label="name" :value="emotion" />
  46. </el-select>
  47. </el-form-item>
  48. <el-form-item label="语速">
  49. <el-select v-model="property.speed_ratio">
  50. <el-option v-for="{ value, label } in speedRatioList" :key="value" :label="label" :value="value" />
  51. </el-select>
  52. </el-form-item>
  53. </template>
  54. <el-form-item label="填空字体">
  55. <el-select v-model="property.fill_font" placeholder="请选择">
  56. <el-option v-for="{ value, label } in fontList" :key="value" :label="label" :value="value" />
  57. </el-select>
  58. </el-form-item>
  59. <el-form-item label="横线长度">
  60. <el-input v-model="property.input_default_width" type="number" placeholder="请输入">
  61. <template slot="append">px</template>
  62. </el-input>
  63. </el-form-item>
  64. <el-divider />
  65. <el-form-item label="语音作答">
  66. <el-radio-group v-model="property.is_enable_voice_answer">
  67. <el-radio v-for="{ value, label } in switchOption" :key="value" :label="value" :value="value">
  68. {{ label }}
  69. </el-radio>
  70. </el-radio-group>
  71. </el-form-item>
  72. <el-form-item label="拼音">
  73. <el-switch v-model="property.view_pinyin" active-value="true" inactive-value="false" />
  74. </el-form-item>
  75. <el-form-item v-show="isEnable(property.view_pinyin)" label="拼音位置">
  76. <el-radio
  77. v-for="{ value, label } in pinyinPositionList"
  78. :key="value"
  79. v-model="property.pinyin_position"
  80. :label="value"
  81. :disabled="!isEnable(property.view_pinyin)"
  82. >
  83. {{ label }}
  84. </el-radio>
  85. </el-form-item>
  86. <el-form-item v-show="isEnable(property.view_pinyin)" label="">
  87. <el-checkbox
  88. v-model="property.is_first_sentence_first_hz_pinyin_first_char_upper_case"
  89. :disabled="!isEnable(property.view_pinyin)"
  90. true-label="true"
  91. false-label="false"
  92. >句首大写</el-checkbox
  93. >
  94. </el-form-item>
  95. <AddAnswer />
  96. </el-form>
  97. </div>
  98. </template>
  99. <script>
  100. import SettingMixin from '@/views/book/courseware/create/components/common/SettingMixin';
  101. import {
  102. getFillProperty,
  103. arrangeTypeList,
  104. audioPositionList,
  105. audioGenerationMethodList,
  106. switchOption,
  107. fillTypeList,
  108. } from '@/views/book/courseware/data/fill';
  109. import { GetTextToAudioConfParamList } from '@/api/app';
  110. import { speedRatioList, fontList } from '@/views/book/courseware/data/common';
  111. export default {
  112. name: 'FillSetting',
  113. mixins: [SettingMixin],
  114. data() {
  115. return {
  116. property: getFillProperty(),
  117. arrangeTypeList,
  118. audioPositionList,
  119. audioGenerationMethodList,
  120. fontList,
  121. switchOption,
  122. fillTypeList,
  123. voice_type_list: [],
  124. emotion_list: [],
  125. speedRatioList,
  126. };
  127. },
  128. created() {
  129. this.getTextToAudioConfParamList();
  130. },
  131. methods: {
  132. // 得到文本转音频的配置参数列表
  133. getTextToAudioConfParamList() {
  134. GetTextToAudioConfParamList()
  135. .then(({ status, voice_type_list, emotion_list }) => {
  136. if (status === 1) {
  137. this.voice_type_list = voice_type_list;
  138. this.emotion_list = emotion_list;
  139. }
  140. })
  141. .catch(() => {});
  142. },
  143. },
  144. };
  145. </script>
  146. <style lang="scss" scoped>
  147. @use '@/styles/mixin.scss' as *;
  148. .el-form {
  149. @include setting-base;
  150. }
  151. </style>