Input.vue 1.7 KB

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