index.vue 8.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258
  1. <template>
  2. <view class="index">
  3. <view class="index-header">
  4. <view class="index-header-container">
  5. <!-- <view class="index-header-left"></view>
  6. <view class="index-header-right"></view>
  7. <view class="index-header-top">
  8. <u-search placeholder="请输入您关键词" v-model="headerTopKeyword" :show-action="false"
  9. class="header-top-usearch"></u-search>
  10. <view class="header-top-notice" @tap="openPage('pages/notification/notification')">
  11. <u-icon name="bell" color="#FFFFFF" size="48"></u-icon>
  12. <u-badge size="mini" type="error" :count="unreadInfoNum" :absolute="false"
  13. class="header-top-notice-badge">
  14. </u-badge>
  15. </view>
  16. <view class="header-top-scan">
  17. <u-icon name="scan" color="#FFFFFF" size="48" class="header-scan-icon"></u-icon>
  18. </view>
  19. </view> -->
  20. <view class="index-header-banner">
  21. <u-swiper :list="bannerList" name="bannerUrl" border-radius="0" mode="round" height="380"
  22. img-mode="scaleToFill" @click="swiperClick" :mode="bannerList.length > 1 ? 'round' : 'none'"/>
  23. </view>
  24. </view>
  25. </view>
  26. <!-- 滚动通知 -->
  27. <view class="notice">
  28. <u-notice-bar mode="horizontal" :type="unreadInfoNum > 0 ? 'primary' : 'none'" :list="noticeList" bg-color="#fff" duration="2000" @click="noticeBarClick" />
  29. </view>
  30. <!-- 宫格 -->
  31. <view class="service">
  32. <view class="service-body u-flex u-flex-wrap u-row-left">
  33. <view class="service-item" @click="openPage('pages/policyInfo/policyInfo')">
  34. <image class="service-item-img" src="../../static/img/index-service-01.png" mode="aspectFill">
  35. </image>
  36. <view class="service-item-text">政策资讯</view>
  37. </view>
  38. <view class="service-item" @click="openPage('pages/recruitment/recruitment')">
  39. <image class="service-item-img" src="../../static/img/index-service-02.png" mode="aspectFill">
  40. </image>
  41. <view class="service-item-text">招聘就业</view>
  42. </view>
  43. <view class="service-item" @click="openPage('pages/cooperativeEnterprise/cooperativeEnterprise')">
  44. <image class="service-item-img" src="../../static/img/index-service-03.png" mode="aspectFill">
  45. </image>
  46. <view class="service-item-text">合作企业</view>
  47. </view>
  48. <view class="service-item" @click="openPage('pages/schools/schools')">
  49. <image class="service-item-img" src="../../static/img/index-service-04.png" mode="aspectFill">
  50. </image>
  51. <view class="service-item-text">合作院校</view>
  52. </view>
  53. <view class="service-item" @click="openPage('pages/skillsTraining/skillsTraining')">
  54. <image class="service-item-img" src="../../static/img/index-service-05.png" mode="aspectFill">
  55. </image>
  56. <view class="service-item-text">技能培训</view>
  57. </view>
  58. <view class="service-item" @click="openPage('pages/basicTraining/basicTraining')">
  59. <image class="service-item-img" src="../../static/img/index-service-06.png" mode="aspectFill">
  60. </image>
  61. <view class="service-item-text">适应性培训</view>
  62. </view>
  63. <view class="service-item" @click="openPage('pages/upgrade/upgrade/upgrade')">
  64. <image class="service-item-img" src="../../static/img/index-service-07.png" mode="aspectFill">
  65. </image>
  66. <view class="service-item-text">学历提升</view>
  67. </view>
  68. <view class="service-item" @click="openPage('pages/entrepreneurshipGuidelines/entrepreneurshipGuidelines')">
  69. <image class="service-item-img" src="../../static/img/index-service-08.png" mode="aspectFill">
  70. </image>
  71. <view class="service-item-text">创业指导</view>
  72. </view>
  73. </view>
  74. </view>
  75. <!-- 新闻动态 -->
  76. <view class="news">
  77. <u-card class="news-list" :body-style="{ 'padding-top':0 }" :border="false" :foot-border-top="false"
  78. :head-border-bottom="false" :full="true" :border-radius="10" margin="0">
  79. <view class="news-list-head" slot="head">
  80. <view class="news-list-head-item">
  81. <view class="card-head-title">新闻动态</view>
  82. <view @click="openPage('/pages/newsInformation/newsInformation')">更多<u-icon name="arrow-right"
  83. color="#d2d3d5"></u-icon>
  84. </view>
  85. </view>
  86. </view>
  87. <view class="news-list-body" slot="body">
  88. <u-nodata notice="暂无新闻" v-if="newsList.length == 0"></u-nodata>
  89. <view v-for="(item,index) in newsList"
  90. @click="$u.route('/pages/newsDetails/newsDetails',{ artId: item.artId })" :key="item.artId"
  91. class="news-list-body-item u-body-item u-flex u-col-between u-row-between">
  92. <view class="news-text">
  93. <view class="news-text-title u-body-item-title u-line-2">{{item.artTitle}}</view>
  94. <view class="news-text-foot foot u-flex u-flex-wrap">
  95. <view>{{item.artCategoryName}}</view>
  96. <view>{{$u.timeFormat(item.createTime.replace(/-/g, '/'), 'mm-dd hh:MM')}}</view>
  97. </view>
  98. </view>
  99. <view class="image-border">
  100. <u-image :src="item.artImage" mode="aspectFill" width="160" height="120"
  101. border-radius="10">
  102. <view slot="error">
  103. <u-image src="../../static/img/default-news.png" mode="aspectFill" width="160" height="120" border-radius="10"/>
  104. </view>
  105. </u-image>
  106. </view>
  107. </view>
  108. </view>
  109. </u-card>
  110. </view>
  111. <!-- ########################## -- 底部导航栏 -- ################################ -->
  112. <u-tabbar :list="tabbarConfig.tabbarList" :height="tabbarConfig.height" :mid-button="tabbarConfig.midButton"
  113. :inactive-color="tabbarConfig.inactiveColor" :active-color="tabbarConfig.activeColor"
  114. :mid-button-size="tabbarConfig.midButtonSize" />
  115. </view>
  116. </template>
  117. <script>
  118. import tabbarconfig from 'tabbarconfig.js';
  119. export default {
  120. data() {
  121. return {
  122. unreadInfoNum: 0,
  123. headerTopKeyword: '',
  124. paginationConfig: {
  125. pageNo: 1,
  126. pageSize: 10
  127. },
  128. // 轮播图
  129. bannerList: [{
  130. bannerUrl: '../../static/img/default.png'
  131. }],
  132. // 新闻列表
  133. newsList: [],
  134. // 消息通知
  135. noticeList: [],
  136. // 自定义tabbar
  137. tabbarConfig: tabbarconfig
  138. }
  139. },
  140. onLoad() {
  141. },
  142. onShow() {
  143. this.getUnreadInfoNum();
  144. this.getBannerList();
  145. this.getNewsList();
  146. this.getNewestInfo();
  147. },
  148. methods: {
  149. /**
  150. * 打开新页面
  151. * @param {String} path 跳转路径
  152. * */
  153. openPage(path, msg) {
  154. let tempRoute = {
  155. url: path
  156. };
  157. if (msg) {
  158. tempRoute.params = {
  159. msg: msg
  160. };
  161. }
  162. this.$u.route(tempRoute);
  163. },
  164. /**
  165. * 获取未读消息条数
  166. */
  167. getUnreadInfoNum() {
  168. this.$u.api.indexApi.getUnreadInfoNumApi().then(res => {
  169. if (res?.code === 200) {
  170. this.unreadInfoNum = res.data;
  171. }
  172. })
  173. },
  174. /**
  175. * 获取最新三条信息
  176. */
  177. getNewestInfo() {
  178. this.$u.api.indexApi.getNewestInfoApi().then(res => {
  179. if (res?.code === 200) {
  180. this.noticeList = res.data.map(item => {
  181. return item.name
  182. })
  183. }
  184. })
  185. },
  186. /**
  187. * 获取新闻列表
  188. */
  189. getNewsList() {
  190. let params = {
  191. artCategoryId: 2,
  192. pageNum: 1,
  193. pageSize: 5
  194. }
  195. this.$u.api.indexApi.getIndexNewsListApi(params).then(res => {
  196. if (res?.code == 200) {
  197. this.newsList = res.rows;
  198. }
  199. })
  200. },
  201. /**
  202. * 获取轮播广告
  203. */
  204. getBannerList() {
  205. this.$u.api.indexApi.indexBannerListApi({
  206. type: 0
  207. }).then(res => {
  208. if (res?.code === 200) {
  209. this.bannerList = res.data.map(item => {
  210. return {
  211. ...item,
  212. image: item.bannerUrl,
  213. title: item.name
  214. }
  215. });
  216. } else {
  217. }
  218. })
  219. },
  220. /**
  221. * 轮播图点击
  222. * @param {Object} index
  223. */
  224. swiperClick(index) {
  225. if (this.bannerList[index].jumpUrl) {
  226. let url = this.bannerList[index].jumpUrl.split('#')[1];
  227. this.$u.route({
  228. url: url,
  229. });
  230. } else {
  231. this.$u.route({
  232. url: 'pages/bannerDetails/bannerDetails',
  233. params: {
  234. id: this.bannerList[index].id,
  235. type: 0
  236. }
  237. })
  238. }
  239. },
  240. /**
  241. * 滚动条
  242. */
  243. noticeBarClick() {
  244. this.openPage('pages/notification/notification')
  245. }
  246. }
  247. }
  248. </script>
  249. <style lang="scss" scoped>
  250. @import "./index.scss";
  251. </style>