SerialNumberPosition.vue 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. <template>
  2. <div :class="['sn-position', property.sn_style ? 'sn-box' : '']" :style="getJustifyContentStyle()">
  3. {{ property.serial_number }}
  4. </div>
  5. </template>
  6. <script>
  7. export default {
  8. name: 'SerialNumberPosition',
  9. props: {
  10. property: {
  11. type: Object,
  12. required: true,
  13. },
  14. },
  15. methods: {
  16. /**
  17. * 得到序号位置样式
  18. */
  19. getJustifyContentStyle() {
  20. const position = this.property.sn_position;
  21. let placeSelf = '';
  22. if (position.includes('start')) {
  23. placeSelf = 'flex-start';
  24. } else if (position.includes('end')) {
  25. placeSelf = 'flex-end';
  26. } else {
  27. placeSelf = 'center';
  28. }
  29. const snStyle = this.property.sn_style;
  30. if (snStyle) {
  31. return this.serialNumberStyle(snStyle, placeSelf);
  32. }
  33. return {
  34. placeSelf,
  35. };
  36. },
  37. // 题干与描述序号样式
  38. serialNumberStyle(styleType, placeSelf) {
  39. let serialNumberStyle = {
  40. placeSelf,
  41. };
  42. const _color = `${this.property.sn_background_color}`;
  43. switch (styleType) {
  44. case 'solidBlockStyle':
  45. serialNumberStyle = {
  46. ...serialNumberStyle,
  47. borderRadius: '4px',
  48. backgroundColor: _color,
  49. color: '#fff',
  50. };
  51. break;
  52. case 'solidCircleStyle':
  53. serialNumberStyle = {
  54. ...serialNumberStyle,
  55. borderRadius: '40px',
  56. backgroundColor: _color,
  57. color: '#fff',
  58. };
  59. break;
  60. case 'hollowBlockStyle':
  61. serialNumberStyle = {
  62. ...serialNumberStyle,
  63. border: `1px solid ${_color}`,
  64. borderRadius: '4px',
  65. color: _color,
  66. };
  67. break;
  68. case 'hollowCircleStyle':
  69. serialNumberStyle = {
  70. ...serialNumberStyle,
  71. border: `1px solid ${_color}`,
  72. borderRadius: '40px',
  73. color: _color,
  74. };
  75. break;
  76. case 'defaultStyle':
  77. serialNumberStyle = {
  78. ...serialNumberStyle,
  79. color: _color,
  80. };
  81. break;
  82. default:
  83. break;
  84. }
  85. return serialNumberStyle;
  86. },
  87. },
  88. };
  89. </script>
  90. <style lang="scss" scoped>
  91. .sn-position {
  92. grid-area: position;
  93. }
  94. .sn-box {
  95. display: flex;
  96. align-items: center;
  97. justify-content: center;
  98. width: 24px;
  99. height: 24px;
  100. font-size: 16px;
  101. font-weight: 500;
  102. }
  103. </style>