Input.vue 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. <template>
  2. <ModuleBase :type="data.type">
  3. <template #content>
  4. <RichText
  5. ref="rich"
  6. v-model="data.content"
  7. toolbar="fontselect fontsizeselect alignleft aligncenter alignright forecolor backcolor"
  8. :font-size="18"
  9. placeholder="请输入内容"
  10. />
  11. <el-button class="btn" @click="openMultilingual">多语言</el-button>
  12. <MultilingualFill
  13. :visible.sync="multilingualVisible"
  14. :text="data.content"
  15. :translations="data.multilingual"
  16. @SubmitTranslation="handleMultilingualTranslation"
  17. />
  18. </template>
  19. </ModuleBase>
  20. </template>
  21. <script>
  22. import ModuleMixin from '../../common/ModuleMixin';
  23. import { getInputData, modelList, inputStyleList } from '@/views/book/courseware/data/input';
  24. export default {
  25. name: 'InputPage',
  26. mixins: [ModuleMixin],
  27. data() {
  28. return {
  29. data: getInputData(),
  30. };
  31. },
  32. watch: {
  33. 'data.property.model': 'handleMindMap',
  34. 'data.property.input_style': 'handleMindMap',
  35. },
  36. methods: {
  37. /**
  38. * @description 更新思维导图数据
  39. */
  40. handleMindMap() {
  41. const modelLabel = modelList.find((item) => item.value === this.data.property.model)?.label || '';
  42. const inputStyleLabel = this.data.property.input_style === inputStyleList[0].value ? '横线' : '';
  43. this.data.mind_map.node_list = [
  44. {
  45. name: `${modelLabel}${inputStyleLabel}输入框组件`,
  46. },
  47. ];
  48. },
  49. handleMultilingualTranslation(translations) {
  50. this.data.multilingual = translations;
  51. },
  52. },
  53. };
  54. </script>
  55. <style lang="scss" scoped>
  56. .btn {
  57. margin-top: 12px;
  58. }
  59. </style>