index.vue 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154
  1. <template>
  2. <view class="main">
  3. <!--搜索-->
  4. <view class="search">
  5. <view class="usearch">
  6. <u-search placeholder="搜索工作" :disabled="true" bgColor="white" :showAction="false" @click="go('/pages/job/search')"></u-search>
  7. </view>
  8. <view class="address omit" @click="go('/pages/job/position/city')">
  9. <text class="icon">&#xe62e;</text>
  10. <text>{{ param.cityName || '南宁市' }}</text>
  11. </view>
  12. </view>
  13. <!--轮播图-->
  14. <view class="banner">
  15. <u-swiper circular :radius="5" :indicator="true" keyName="pic" :list="bannerList" :height="160" class="uni-swiper" @click="click"></u-swiper>
  16. </view>
  17. <!--菜单-->
  18. <view class="menu">
  19. <view class="cd" @click="go('/pages/job/map')">
  20. <view class="out">
  21. <view class="int">
  22. <view class="icon" style="background-color: #03a9f4">&#xe647;</view>
  23. <view class="title">地图找工</view>
  24. </view>
  25. </view>
  26. </view>
  27. <view class="cd" @click="go('/pages/job/list?type=0')">
  28. <view class="out">
  29. <view class="int">
  30. <view class="icon" style="background-color: #4581fb">&#xe9d9;</view>
  31. <view class="title">全职</view>
  32. </view>
  33. </view>
  34. </view>
  35. <view class="cd" @click="go('/pages/job/list?type=1')">
  36. <view class="out">
  37. <view class="int">
  38. <view class="icon" style="background-color: #ff5722">&#xe62a;</view>
  39. <view class="title">兼职</view>
  40. </view>
  41. </view>
  42. </view>
  43. <view class="cd" @click="go('/pages/job/enterprise/card')">
  44. <view class="out">
  45. <view class="int">
  46. <view class="icon" style="background-color: #03a9f4">&#xe725;</view>
  47. <view class="title">企业卡片</view>
  48. </view>
  49. </view>
  50. </view>
  51. </view>
  52. <view class="tab">
  53. <u-tabs :list="tab" @click="tabClick"></u-tabs>
  54. </view>
  55. <!--职位列表-->
  56. <view class="list">
  57. <job :list="list" v-if="list.length > 0"></job>
  58. <u-empty v-else text="该城市暂无工作"></u-empty>
  59. </view>
  60. </view>
  61. </template>
  62. <script>
  63. export default {
  64. data() {
  65. return {
  66. tab: [
  67. { name: '最新', orderBy: 'id' },
  68. { name: '附近', orderBy: 'distance' }
  69. ],
  70. list: [],
  71. param: { pageNum: 1, pageSize: 20, type: 0 },
  72. bannerList: [],
  73. noticeList: []
  74. };
  75. },
  76. onLoad() {
  77. this.getData();
  78. this.initData();
  79. uni.$on('select_city', (res) => {
  80. this.param.cityName = res.title;
  81. this.param.regionId = res.id;
  82. this.getData();
  83. });
  84. },
  85. methods: {
  86. initData() {
  87. //首页数据
  88. this.http.request({
  89. url: '/app/home/index',
  90. success: (res) => {
  91. this.contract = res.data.data.contract;
  92. this.bannerList = res.data.data.bannerList;
  93. res.data.data.noticeList.forEach((item) => {
  94. this.noticeList.push(item.title);
  95. });
  96. }
  97. });
  98. //初始化所有地区
  99. this.http.request({
  100. url: '/app/common/column/city/all',
  101. success: (res) => {
  102. uni.setStorageSync('city_all', res.data.data);
  103. }
  104. });
  105. // #ifdef MP-WEIXIN
  106. //授权获取位置
  107. uni.authorize({
  108. scope: 'scope.userLocation',
  109. success: (s) => {
  110. uni.getLocation({
  111. type: 'wgs84',
  112. success: (res) => {
  113. uni.setStorageSync('location', res);
  114. this.param.latitude = res.latitude;
  115. this.param.longitude = res.longitude;
  116. this.getData();
  117. }
  118. });
  119. },
  120. fail(res) {
  121. uni.showModal({ title: '提示', content: '定位失败,请检查是否允许定位', showCancel: false });
  122. }
  123. });
  124. // #endif
  125. },
  126. getData() {
  127. this.http.request({
  128. url: '/app/position/list',
  129. data: this.param,
  130. success: (res) => {
  131. this.list = res.data.rows;
  132. }
  133. });
  134. },
  135. tabClick(e) {
  136. this.param.orderBy = e.orderBy;
  137. this.getData();
  138. },
  139. go(url) {
  140. uni.navigateTo({ url: url });
  141. }
  142. }
  143. };
  144. </script>
  145. <style lang="scss">
  146. .banner {
  147. margin-top: 15px;
  148. box-shadow: $box-shadow;
  149. }
  150. .menu {
  151. box-shadow: none;
  152. }
  153. </style>