123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103 |
- import SerialNumberPosition from './SerialNumberPosition.vue';
- import DOMPurify from 'dompurify';
- import { GetCoursewareComponentContent_View } from '@/api/book';
- import { isEnable } from '@/views/book/courseware/data/common';
- const mixin = {
- data() {
- return {
- answer: { answer_list: [] }, // 答案
- isJudgingRightWrong: false, // 是否判断对错
- isShowRightAnswer: false, // 是否显示正确答案
- disabled: false, // 是否禁用
- isEnable,
- loader: false,
- };
- },
- props: {
- id: {
- type: String,
- required: true,
- },
- coursewareId: {
- type: String,
- required: true,
- },
- },
- components: {
- SerialNumberPosition,
- },
- created() {
- this.getCoursewareComponentContent_View();
- },
- methods: {
- getCoursewareComponentContent_View() {
- GetCoursewareComponentContent_View({ courseware_id: this.coursewareId, component_id: this.id }).then(
- ({ content }) => {
- if (content) this.data = JSON.parse(content);
- this.loader = true;
- },
- );
- },
- /**
- * 获取答案
- * @returns {array} 答案
- */
- getAnswer() {
- return this.answer;
- },
- /**
- * 显示答案
- * @param {boolean} isJudgingRightWrong 是否判断对错
- * @param {boolean} isShowRightAnswer 是否显示正确答案
- * @param {object} userAnswer 用户答案
- * @param {boolean} disabled 是否禁用
- */
- showAnswer(isJudgingRightWrong, isShowRightAnswer, userAnswer, disabled) {
- if (this.loader === false) {
- return setTimeout(() => this.showAnswer(isJudgingRightWrong, isShowRightAnswer, userAnswer, disabled), 100);
- }
- this.isJudgingRightWrong = isJudgingRightWrong;
- this.isShowRightAnswer = isShowRightAnswer;
- this.disabled = disabled;
- if (userAnswer) this.answer = userAnswer;
- },
- /**
- * 得到序号外部样式
- */
- getAreaStyle() {
- if (!isEnable(this.data.property.sn_display_mode)) {
- return {
- grid: `"main" / 1fr`,
- };
- }
- const position = this.data.property.sn_position;
- let grid = '';
- if (position.includes('right')) {
- grid = `"main position" / 1fr auto`;
- } else if (position.includes('left')) {
- grid = `"position main" / auto 1fr`;
- } else if (position.includes('top')) {
- grid = `"position" auto "main" 1fr`;
- } else if (position.includes('bottom')) {
- grid = `"main" 1fr "position" auto`;
- }
- return {
- grid,
- };
- },
- /**
- * 过滤 html,防止 xss 攻击
- * @param {string} html 需要过滤的html
- * @returns {string} 过滤后的html
- */
- sanitizeHTML(html) {
- return DOMPurify.sanitize(html);
- },
- },
- };
- export default mixin;
|