import $ from '../../util/dom-core.js'; import { gennerOneLine } from '../../util/lineUtil.js'; function _addParagraph (editor) { let currentPage = editor.page.currentPage; if (!currentPage) { return false; } let $para = currentPage.addParagraph(); return $para; } // 客观题框 function objectBorder (editor, data) { // 加一段,再插入框 let $para = _addParagraph(editor); if (!$para) { editor.message.showMessage('请在编辑器内编辑'); return false; } let sortIndex = data.sort; let border = $('
'); border.attr('data-type', 1); border.attr('data-sort', sortIndex); border.attr('tabindex', 1); border.attr('data-current-row', 0); border.attr('contenteditable', false); // style start border.css('border', '1px solid #000') .css('padding', '0') .css('margin', '10px 0') .css('overflow', 'hidden') .css('height', 'auto') .css('width', '100%') .css('box-sizing', 'border-box') .css('outline', 'none') .css('border-color', '#000'); // style end // 生成行列 let row = parseInt(data.row); let column = parseInt(data.column); border.attr('data-row', row); border.attr('data-column', column); let cWidth = 100 / column + '%'; let lastColumn = column - 1; let columnIndex = 1; for (let i = 0; i < row; i++) { let $row = $('
'); $row.css('float', 'left') // .css('min-height', '100px') .css('height', 'auto') .css('width', '100%'); $row.attr('data-current-column', 0); i > 0 && ($row.css('border-top', '1px solid #000').css('box-sizing', 'border-box')); for (let j = 0; j < column; j++) { let $column = $('
'); $column.attr('data-question-count', 0); $column.attr('data-Index', columnIndex++); $column.attr('data-sort', sortIndex); $column.css('width', cWidth) .css('float', 'left') // .css('min-height', '100px') .css('height', 'auto'); j < lastColumn && ($column.css('border-right', '1px solid #000').css('box-sizing', 'border-box')); $row.append($column); } border.append($row); } $para.append(border); } // 主观题框 function subjectBorder (editor, data) { // 加一段,再插入框 let $para = _addParagraph(editor); if (!$para) { editor.message.showMessage('请在编辑器内编辑'); return false; } let group = parseInt(data.group); let sortIndex = data.sort; let border = $('
'); border.attr('data-type', 2); border.attr('data-sort', sortIndex); border.attr('tabindex', 1); $(border[0].firstChild).append(gennerOneLine()); // style start border.css('border', '1px solid #000') .css('padding', '10px 15px') .css('height', 'auto') .css('margin', '10px 0') .css('width', '100%') .css('box-sizing', 'border-box') .css('outline', 'none') .css('border-color', '#000'); // style end if (group > 0) { let problems = data.pros; let problemsLength = problems.length; let $optional = $('
'); $optional.css('margin-bottom', '10px'); let $optionalTips = $('
选做题
') $optional.append($optionalTips); let $optionalBody = $('
'); let $optionTitle = $('
题号:
'); $optionTitle.css('display', 'inline-block').css('width', 'auto').css('height', 'auto'); $optionalBody.append($optionTitle); for (let i = 0; i < problemsLength; i++) { let $problemBox = $('
'); $problemBox.css('display', 'inline-block').css('width', 'auto').css('height', 'auto').css('margin', '0 10px'); let pnum = problems[i].pnum; // 如果小问没有pnum,则显示小问pnum if (!pnum) { let qutions = problems[i].qus; let pnumArr = []; for (let k = 0; k < qutions.length; k++) { pnumArr.push(qutions[k].pnum); } pnum = '[' + pnumArr.join(',') + ']'; } let $optionPnum = $('
' + pnum + '
'); $optionPnum.css('display', 'inline-block').css('width', 'auto').css('height', 'auto').css('margin', '0 3px'); let $optionBorder = $('
'); $optionBorder.css('border', '1px solid #000') .css('text-align', 'center') .css('width', '19px') .css('height', 'auto') .css('box-sizing', 'border-box') .css('font-size', '12px') .css('display', 'inline-block') .css('line-height', '11px') .css('margin', '0 0 0 5px'); $problemBox.append($optionPnum); $problemBox.append($optionBorder); $optionalBody.append($problemBox); } $optional.append($optionalBody); border[0].firstChild.insertBefore($optional[0], border[0].firstChild.firstChild); } $para.append(border); } let Border = function (params) { let editor = this.editor; let type = params.type; let data = params.data; switch (parseInt(type)) { case 1: objectBorder(editor, data); break; case 2: subjectBorder(editor, data); break; } } export default { _border: Border }