index.vue 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. <template>
  2. <view class="U0000010-template1" :class="className">
  3. <!-- style -->
  4. <view v-html="css"></view>
  5. <view :style="box_style" class="html-box" v-html="datas.html_value"></view>
  6. </view>
  7. </template>
  8. <script>
  9. // 自定义样式
  10. const css = function() {
  11. const {
  12. bg_color,
  13. padding_top,
  14. padding_bottom,
  15. padding_left,
  16. padding_right,
  17. } = this.datas;
  18. return `
  19. .component-${this.id} .html-box {
  20. background-color: ${bg_color || '#f8f8f8'};
  21. padding-top: ${padding_top}px;
  22. padding-bottom: ${padding_bottom}px;
  23. padding-left: ${padding_left}px;
  24. padding-right: ${padding_right}px;
  25. }
  26. .component-${this.id} .html-box p {
  27. margin: 0;
  28. }
  29. .component-${this.id} .html-box img {
  30. max-width: 100%;
  31. }
  32. `;
  33. };
  34. export default {
  35. props: ['datas', 'styles'],
  36. data() {
  37. return {}
  38. },
  39. computed: {
  40. box_style() {
  41. const {
  42. bg_color,
  43. padding_top,
  44. padding_bottom,
  45. padding_left,
  46. padding_right,
  47. } = this.datas;
  48. return `
  49. background-color: ${bg_color || '#f8f8f8'};
  50. padding-top: ${padding_top}px;
  51. padding-bottom: ${padding_bottom}px;
  52. padding-left: ${padding_left}px;
  53. padding-right: ${padding_right}px;
  54. `;
  55. },
  56. css() {
  57. return '<style>' + css.call(this) + '</style>';
  58. },
  59. className() {
  60. const name = ['component-wrapper', `component-${this.id}`];
  61. return name;
  62. },
  63. },
  64. methods: {},
  65. };
  66. </script>
  67. <style lang="less" scoped>
  68. // 默认
  69. .component-wrapper {
  70. width: 750rpx;
  71. }
  72. .html-box {
  73. min-height: 60rpx;
  74. line-height: 60rpx;
  75. }
  76. </style>