model.js 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. import { getElementId, randomCode, deepCopy } from "../../plugins/utils";
  2. const EXPLAIN_PROP = {
  3. type: "EXPLAIN",
  4. sign: "subjective",
  5. topicNo: null,
  6. topicName: "",
  7. startNumber: 1,
  8. questionsCount: 1
  9. };
  10. // 解答题-小题
  11. const MODEL = {
  12. type: "EXPLAIN",
  13. x: 0,
  14. y: 0,
  15. w: 0,
  16. h: 458,
  17. minHeight: 60,
  18. sign: "subjective",
  19. topicNo: null,
  20. isCovered: false,
  21. // 是否是小题的最后一个答题区,初始每个小题只有一个答题区,默认为true
  22. isLast: true,
  23. // 是否是小题扩展的区域
  24. isExtend: false,
  25. // 是否展示解答题题目内容,解答题第1小题的第1个答题区需要显示解答题题目内容
  26. showTitle: false,
  27. // 小题序号
  28. serialNumber: 0,
  29. // 每一个解答题小题都可以包含其他基础元件,这些基础元件都用绝对定位
  30. elements: [],
  31. // 解答题整体信息,EXPLAIN_PROP
  32. parent: {}
  33. };
  34. // tip属性存在时的条件:parent:大题的小题,container:题目内的子元素
  35. const getModel = () => {
  36. return {
  37. id: getElementId(),
  38. key: randomCode(),
  39. ...EXPLAIN_PROP
  40. };
  41. };
  42. const getFullModel = explainProp => {
  43. const parent = { ...explainProp };
  44. let elements = [];
  45. for (let i = 0; i < explainProp.questionsCount; i++) {
  46. let child = Object.assign({}, deepCopy(MODEL), {
  47. id: getElementId(),
  48. key: randomCode(),
  49. w: parent.w,
  50. topicNo: parent.topicNo,
  51. serialNumber: i + explainProp.startNumber,
  52. parent
  53. });
  54. elements[i] = child;
  55. }
  56. elements[0].showTitle = true;
  57. return elements;
  58. };
  59. export { EXPLAIN_PROP, MODEL, getModel, getFullModel };