index.vue 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143
  1. <template>
  2. <view class="fui-wrap">
  3. <view class="search-content">
  4. <u-search placeholder="请输入关键字" v-model="keyword" @custom="onSearch" @search="onSearch"></u-search>
  5. </view>
  6. <u-swiper :list="list" imgMode="aspectFill" :radius='0' :height="240" />
  7. <u-notice-bar :text="msg" direction="column" :more-icon="false" color="#5af" bg-color="#d6e8f7"></u-notice-bar>
  8. <view style="width: 100%; margin-top: 20rpx">
  9. <u-grid
  10. :border="false"
  11. :col="3"
  12. @click="click"
  13. >
  14. <u-grid-item
  15. v-for="(baseListItem,baseListIndex) in baseList"
  16. :key="baseListIndex"
  17. >
  18. <view class="grid-item-icon" :style="[baseListItem.style]">
  19. <image :src="baseListItem.icon"></image>
  20. </view>
  21. <text class="grid-text">{{ baseListItem.title }}</text>
  22. </u-grid-item>
  23. </u-grid>
  24. </view>
  25. <u-gap height="10" bgColor="#bbb"></u-gap>
  26. <view class="u-page">
  27. <view class="u-page-title">
  28. <view class="line"></view>
  29. <view class="rectangle"></view>
  30. <view class="rectangle"></view>
  31. <view class="title-content">最新资讯</view>
  32. <view class="rectangle"></view>
  33. <view class="rectangle"></view>
  34. <view class="line"></view>
  35. </view>
  36. <item-list :ds="indexList" :onItemClick="onContentClick" />
  37. </view>
  38. </view>
  39. </template>
  40. <script>
  41. import { fetchContentInfo } from '@/common/api';
  42. import ItemList from '@/components/ItemList/index.vue';
  43. import { getImageUrl } from '@/util';
  44. import { fetchMsgList, fetchViewCfgList } from '@/common/api';
  45. import { COMP_CODE } from '@/common/EnumConst';
  46. export default {
  47. components: {
  48. ItemList,
  49. },
  50. data() {
  51. return {
  52. keyword: '',
  53. list: [
  54. ],
  55. msg: [],
  56. baseList: [
  57. ],
  58. indexList: [],
  59. styleObj: {
  60. "backgroundColor": "#000"
  61. }
  62. };
  63. },
  64. onLoad() {
  65. this.loadMsg();
  66. this.loadmore();
  67. this.viewCfg();
  68. },
  69. methods: {
  70. click() {
  71. },
  72. onContentClick(item) {
  73. uni.navigateTo({
  74. url: `/pasb/pages/detail/index?id=${item.id}`,
  75. });
  76. },
  77. async loadmore() {
  78. const res = await fetchContentInfo({
  79. pageNum: 1,
  80. pageSize: 99,
  81. });
  82. this.indexList = res.rows.map(item => {
  83. return {
  84. id: item.id,
  85. imgUrl: getImageUrl(item.thumbnail),
  86. title: item.title,
  87. date: item.createTime,
  88. };
  89. });
  90. },
  91. async loadMsg() {
  92. let result = [];
  93. const res = await fetchMsgList({
  94. pageNum: 1,
  95. pageSize: 99,
  96. });
  97. if (res.rows.length > 0) {
  98. result = res.rows.map(item => item.msg);
  99. }
  100. this.msg = result;
  101. },
  102. async viewCfg() {
  103. let result = [];
  104. const res = await fetchViewCfgList({
  105. pageNum: 1,
  106. pageSize: 99,
  107. });
  108. if (res.rows.length > 0) {
  109. result = res.rows.map(item => item.msg);
  110. const index_ctl = res.rows.filter((item) => item.compCode === COMP_CODE.index_ctl);
  111. const index_swip = res.rows.filter((item) => item.compCode === COMP_CODE.index_swip);
  112. this.list = index_swip.map(item => getImageUrl(item.iconUri));
  113. this.baseList = index_ctl.map(item => {
  114. return {
  115. icon: getImageUrl(item.iconUri),
  116. style: JSON.parse(item.style),
  117. title: item.labelTxt,
  118. };
  119. });
  120. }
  121. },
  122. onSearch(val) {
  123. uni.reLaunch({
  124. url: `/pages/tabbar/news/index?keyword=${val}`,
  125. });
  126. },
  127. },
  128. onShareAppMessage() {
  129. return {
  130. title: 'First UI组件库',
  131. };
  132. },
  133. };
  134. </script>
  135. <style lang="scss" src="./index.scss">
  136. </style>