// 组件混入 import ModuleBase from './ModuleBase.vue'; import { snGenerationMethodList, viewMethodList, audioViewMethodList } from '@/views/book/courseware/data/common'; import { SaveCoursewareComponentContent, GetCoursewareComponentContent } from '@/api/book'; const mixin = { data() { return { snGenerationMethodList, viewMethodList, audioViewMethodList, }; }, props: { id: { type: String, required: true, }, deleteComponent: { type: Function, required: true, }, componentMove: { type: Function, required: true, }, }, components: { ModuleBase, }, provide() { return { showSetting: this.showSetting, id: this.id, deleteComponent: this.deleteComponent, handleComponentMove: this.handleComponentMove, }; }, inject: ['courseware_id'], created() { GetCoursewareComponentContent({ courseware_id: this.courseware_id, component_id: this.id }).then(({ content }) => { if (content) { this.$nextTick(() => { // 数据加载完成后的操作 this.data = JSON.parse(content); }); } }); }, methods: { /** * @description 显示设置 */ showSetting() { this.$emit('showSetting', this.data.property, this.data.type, this.id); }, /** * @description 更新属性 * @param {object} setting 属性 * @param {string} type 属性类型 */ updateSetting(property) { this.data.property = property; }, handleComponentMove(data) { this.componentMove({ ...data, id: this.id }); }, saveCoursewareComponentContent() { SaveCoursewareComponentContent({ courseware_id: this.courseware_id, component_id: this.id, component_type: this.data.type, content: JSON.stringify(this.data), }); }, }, }; export default mixin;