index.vue 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. <template>
  2. <view class="component-wrapper u000242" :style="wrapper_style">
  3. <u-notice-bar :text="announcetext" :bgColor="datas.bg_color" :fontSize="datas.text_size" @click="goMessage"
  4. :color="datas.text_color" direction="column" mode="closable" speed="200">
  5. </u-notice-bar>
  6. </view>
  7. </template>
  8. <script>
  9. import homeApi from '@/api/home/index.js'
  10. export default {
  11. props: ['styles', 'datas'],
  12. data() {
  13. let siteinfo = getApp().globalData.siteinfo;
  14. this.homeInit();
  15. return {
  16. settingFile: siteinfo,
  17. emptyImage: siteinfo.root_img + '/static/app/image.png',
  18. announce: [],
  19. announcetext: [],
  20. }
  21. },
  22. computed: {
  23. /** 样式 */
  24. wrapper_style() {
  25. const {
  26. bg_color,
  27. padding_top,
  28. padding_bottom,
  29. padding_left,
  30. padding_right,
  31. } = this.datas;
  32. return `
  33. padding-top: ${padding_top}rpx;
  34. padding-bottom: ${padding_bottom}rpx;
  35. padding-left: ${padding_left}rpx;
  36. padding-right: ${padding_right}rpx;
  37. background-color: ${bg_color};
  38. `;
  39. },
  40. /** 标题样式 */
  41. title_style() {
  42. const {
  43. text_align,
  44. text_size,
  45. text_color
  46. } = this.datas;
  47. return `
  48. margin-left: 10px;
  49. text-align: ${text_align};
  50. font-size: ${text_size}px;
  51. color: ${text_color};
  52. `;
  53. },
  54. img_style() {
  55. const {
  56. button_size,
  57. button_color
  58. } = this.datas
  59. return `
  60. color: ${button_color};
  61. margin-left: 10px;
  62. font-size:${button_size}px;
  63. `;
  64. },
  65. /** 标题 */
  66. title() {
  67. return '公告内容';
  68. },
  69. },
  70. methods: {
  71. goMessage(index) {
  72. this.$until.toarticle('',this.announce[index].id)
  73. },
  74. async homeInit() {
  75. let that = this;
  76. let res = await homeApi.index()
  77. if (res.data&&res.data.announce) {
  78. that.announce = res.data.announce;
  79. res.data.announce.forEach(item => {
  80. that.announcetext.push(item.title);
  81. });
  82. }
  83. },
  84. },
  85. mounted() {
  86. this.$emit('loaded');
  87. }
  88. };
  89. </script>
  90. <style lang="less" scoped>
  91. .component-wrapper {
  92. display: block;
  93. max-width: 100%;
  94. margin-left: auto;
  95. margin-right: auto;
  96. overflow: hidden;
  97. text-decoration: none;
  98. display: flex;
  99. align-items: center;
  100. }
  101. </style>