model.js 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. import {
  2. getElementId,
  3. randomCode,
  4. deepCopy,
  5. getNumList,
  6. objAssign
  7. } from "../../plugins/utils";
  8. const MODEL = {
  9. type: "PAGE",
  10. columnGap: 20,
  11. locators: [],
  12. globals: [],
  13. columns: [],
  14. pageSize: "A3",
  15. columnNumber: 2,
  16. showForbidArea: false
  17. };
  18. // 可编辑栏
  19. const COLUMN = {
  20. type: "COLUMN",
  21. x: "",
  22. y: "",
  23. w: "",
  24. h: "",
  25. elements: []
  26. };
  27. // 定位点
  28. const LOCATOR = {
  29. type: "LOCATOR",
  30. x: "",
  31. y: "",
  32. w: "",
  33. h: ""
  34. };
  35. const getModel = (datas = {}) => {
  36. let npage = deepCopy(MODEL);
  37. npage = objAssign(npage, datas);
  38. npage.id = getElementId();
  39. const { pageSize, columnNumber } = npage;
  40. if (
  41. (pageSize === "A3" && columnNumber === 4) ||
  42. (pageSize === "A4" && columnNumber === 2)
  43. ) {
  44. npage.columnGap = 10;
  45. }
  46. const num = pageSize === "A3" ? 3 : 2;
  47. npage.locators = getNumList(num).map((item, index) => {
  48. const id = getElementId();
  49. return [
  50. {
  51. ...LOCATOR,
  52. id: `locator-${id}-${index}0`
  53. },
  54. {
  55. ...LOCATOR,
  56. id: `locator-${id}-${index}1`
  57. }
  58. ];
  59. });
  60. npage.columns = getNumList(columnNumber).map(() => {
  61. return { id: `column-${randomCode()}`, ...deepCopy(COLUMN) };
  62. });
  63. return npage;
  64. };
  65. export { MODEL, getModel };