123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111 |
- const AnswerControlMixin = {
- props: {},
- data() {
- return {
- answer_comparison: {
- answer_list: []
- },
- // answer_control: {},
- };
- },
- methods: {
- /**
- * 显示答案
- * @param {Boolean} isJudgeAnswer 是否判断对错
- * @param {Boolean} isViewRightAnswer 是否显示正确答案
- * @param {Boolean} isReadOnly 是否只读
- */
- showAnswer(isJudgeAnswer, isViewRightAnswer, isReadOnly, question_id, answer_comparison, is_objective) {
- this.answer_control[question_id] = {
- isJudgeAnswer: isJudgeAnswer,
- isViewRightAnswer: isViewRightAnswer,
- isReadOnly: isReadOnly,
- is_objective: is_objective
- };
- this.question_id = question_id;
- if (answer_comparison) this.answer_comparison = answer_comparison;
- this.$forceUpdate();
- },
- //初始化控制
- commonComputedAnswerControl(question_id) {
- var cur = this.answer_control[question_id];
- if (!cur) {
- this.answer_control[question_id] = {
- isJudgeAnswer: false, //是否判断答案
- isViewRightAnswer: false, //是否显示标准答案
- isReadOnly: false, //是否只读
- is_objective: true, //是否客观题
- };
- cur = this.answer_control[question_id];
- }
- return cur;
- },
- //初始化整个答题控制
- initAnswerControl() {
- for (const key in this.answer_control) {
- this.answer_control[key] = {
- isJudgeAnswer: false,
- isViewRightAnswer: false,
- isReadOnly: false,
- is_objective: true,
- };
- }
- },
- /**
- * 题目序号以括号结尾,如果不是则加上 '.'
- * @param {题目序号} question_number
- * @returns {题目序号}
- */
- questionNumberEndIsBracket(question_number) {
- return question_number ? (
- `${question_number}${/[()()]/.test(question_number) ? '' :(/[一二三四五六七八九十]+/.test(question_number) ? '、' :'.')}`
- ) : '';
- },
- /**
- * 预览图片
- * @param {图片地址} url
- */
- preview(url) {
- uni.previewImage({
- current: url,
- urls: [url],
- });
- },
- /**
- * 预览富文本里面的图片(连线题,朗读题等调用这个)
- * @param {索引,定位富文本元素} i,j
- */
- previewByRichTextImg(i, j, question_id) {
- var _richText = 'richText' + i + j + question_id;
- if ('sort' === i && 'sort' === j) {
- _richText = question_id; //排序题特殊处理(这里question_id实际为mark)
- };
- let html = '';
- if (i < 0 && j < 0) {
- html = this.$refs[_richText].$el.innerHTML;
- } else {
- html = this.$refs[_richText][0].$el.innerHTML;
- }
- const srcReg = /<img.*?src=["']?(.*?)["'\s]/g;
- const results = [...html.matchAll(srcReg)];
- if (!results) return;
- const srcList = results.map(result => result[1]);
- if (!srcList) return;
- if (srcList.length > 1) {
- uni.previewImage({
- current: 0,
- urls: srcList,
- });
- } else {
- this.preview(srcList[0]);
- }
- },
- },
- };
- export default AnswerControlMixin;
|