特易招,招聘小程序
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

289 lines
6.3 KiB

8 months ago
8 months ago
5 months ago
8 months ago
8 months ago
8 months ago
8 months ago
5 months ago
8 months ago
8 months ago
8 months ago
5 months ago
8 months ago
5 months ago
8 months ago
8 months ago
8 months ago
5 months ago
8 months ago
8 months ago
8 months ago
5 months ago
8 months ago
8 months ago
8 months ago
7 months ago
6 months ago
7 months ago
6 months ago
7 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
5 months ago
8 months ago
8 months ago
8 months ago
5 months ago
8 months ago
8 months ago
8 months ago
5 months ago
8 months ago
5 months ago
8 months ago
8 months ago
8 months ago
5 months ago
8 months ago
5 months ago
5 months ago
5 months ago
5 months ago
7 months ago
8 months ago
5 months ago
8 months ago
5 months ago
8 months ago
8 months ago
7 months ago
5 months ago
8 months ago
7 months ago
5 months ago
7 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
7 months ago
8 months ago
8 months ago
8 months ago
8 months ago
5 months ago
4 months ago
5 months ago
8 months ago
  1. <template>
  2. <view class="page">
  3. <view class="banner">
  4. <uv-swiper
  5. :list="bannerList"
  6. indicator
  7. height="620rpx"
  8. keyName="image"></uv-swiper>
  9. <!-- indicatorStyle="bottom: 100rpx;" -->
  10. <view class="top">
  11. <view class="search">
  12. <uv-search
  13. :placeholder="role ? '请输入简历名称' : '请输入岗位名称'"
  14. :showAction="false"
  15. search-icon-size="40rpx"
  16. @search="search"
  17. v-model="keyword"></uv-search>
  18. </view>
  19. </view>
  20. </view>
  21. <!-- 工人看到的 -->
  22. <view class="content"
  23. v-if="!role">
  24. <view class="grid">
  25. <uv-grid :border="false"
  26. :col="5">
  27. <uv-grid-item
  28. @click="$utils.navigateTo(`/pages_order/work/workList?typeId=${item.id}&title=${item.name}`)"
  29. v-for="(item,index) in jobTypeList"
  30. v-if="index < 4"
  31. :key="index">
  32. <image class="grid-icon" :src="item.image" mode="aspectFill"></image>
  33. <text class="grid-text">{{item.name}}</text>
  34. </uv-grid-item>
  35. <uv-grid-item
  36. v-if="jobTypeList.length > 4"
  37. @click="$utils.navigateTo(`/pages_order/work/workTypeList`)"
  38. >
  39. <image class="grid-icon" src="/static/image/home/5.png" mode="aspectFill"></image>
  40. <text class="grid-text">其他招工</text>
  41. </uv-grid-item>
  42. </uv-grid>
  43. </view>
  44. </view>
  45. <!-- 筛选器 -->
  46. <screenWork ref="screenWork" @clickItem="clickItem"/>
  47. <!-- 老板看到的 -->
  48. <userList ref="workList" v-if="role"/>
  49. <!-- 工人看到的 -->
  50. <workList ref="workList" v-else/>
  51. <view class="box"
  52. @click="toAdd"
  53. v-if="role">
  54. <view class="left">
  55. 发布
  56. </view>
  57. <view class="center">
  58. <image src="/static/image/home/c.png" mode=""></image>
  59. </view>
  60. <view class="right">
  61. 招工
  62. </view>
  63. </view>
  64. <view class="switchIdentity"
  65. @click="switchIdentity">
  66. <image src="/static/image/home/x1.png"
  67. v-if="role"
  68. mode="widthFix"></image>
  69. <image src="/static/image/home/x2.png"
  70. v-else
  71. mode="widthFix"></image>
  72. </view>
  73. <checkinScore ref="checkinScore" v-if="UserExtensionInfo.signFlag == false"/>
  74. <PrivacyAgreementPoup/>
  75. <kefu></kefu>
  76. <tabber select="0"/>
  77. </view>
  78. </template>
  79. <script>
  80. import PrivacyAgreementPoup from '@/components/config/PrivacyAgreementPoup.vue'
  81. import workList from '@/components/list/workList/index.vue'
  82. import userList from '@/components/list/userList/index.vue'
  83. import tabber from '@/components/base/tabbar.vue'
  84. import screenWork from '@/components/screen/screenWork.vue'
  85. import checkinScore from '@/components/checkinScore.vue'
  86. import { mapState } from 'vuex'
  87. export default {
  88. components : {
  89. PrivacyAgreementPoup,
  90. workList,
  91. tabber,
  92. screenWork,
  93. userList,
  94. checkinScore,
  95. },
  96. computed: {
  97. ...mapState([
  98. 'userInfo',
  99. 'role',
  100. 'banner',
  101. 'jobTypeList',
  102. 'UserExtensionInfo',
  103. ]),
  104. bannerList(){
  105. return this.banner.filter(n => n.type == 0)
  106. },
  107. },
  108. data() {
  109. return {
  110. productList: [],
  111. keyword : '',
  112. screenWorkList : [],
  113. }
  114. },
  115. onPullDownRefresh(){
  116. this.$refs.workList.getData(this.screenWorkList)
  117. this.$store.commit('getBanner')
  118. },
  119. // 页面显示的时候触发
  120. onShow() {
  121. this.$refs.workList.getData(this.screenWorkList)
  122. this.$store.commit('getBanner')
  123. if(uni.getStorageSync('token')){
  124. this.$store.commit('getUserExtensionInfo')
  125. this.$store.commit('getBanner')
  126. }
  127. },
  128. //滚动到屏幕底部
  129. onReachBottom() {
  130. this.$refs.workList.loadMoreData()
  131. },
  132. methods: {
  133. clickItem(result){
  134. this.screenWorkList = result
  135. this.$refs.workList.getData(this.screenWorkList)
  136. },
  137. toAdd(){
  138. if(this.role){
  139. // 在完成企业认证的情况下执行
  140. this.$store.commit('isAuthCertificationEnterprise', state => {
  141. this.$utils.navigateTo('/pages_order/work/jobPosting')
  142. })
  143. }else{
  144. this.$utils.navigateTo('/pages_order/work/addResume')
  145. }
  146. },
  147. search(){
  148. this.$utils.navigateTo(`/pages_order/work/workList?keyword=${this.keyword}`)
  149. this.keyword = ''
  150. },
  151. // 切换身份
  152. async switchIdentity(){
  153. // 在完成实名认证的情况下执行
  154. this.$store.commit('isAuthCertification', () => {
  155. // 在完成企业认证的情况下执行
  156. this.$store.commit('isAuthCertificationEnterprise', state => {
  157. uni.showModal({
  158. title: `确认切换到${
  159. this.role ? '师傅' : '雇主'
  160. }身份吗`,
  161. success : e => {
  162. if(!e.confirm){
  163. return
  164. }
  165. this.$store.commit('setRole', !this.role)
  166. this.$nextTick(() => {
  167. this.$refs.workList.getData(this.screenWorkList)
  168. })
  169. }
  170. })
  171. })
  172. })
  173. },
  174. }
  175. }
  176. </script>
  177. <style scoped lang="scss">
  178. .page{
  179. .banner{
  180. position: relative;
  181. background-color: $uni-color;
  182. .top{
  183. position: absolute;
  184. top: 190rpx;
  185. left:00rpx;
  186. padding-top: 30rpx;
  187. display: flex;
  188. width: 100%;
  189. flex-direction: column;
  190. align-items: center;
  191. .search{
  192. width: 700rpx;
  193. /deep/ .uv-search__content__icon{
  194. padding: 10rpx 0;
  195. }
  196. }
  197. .title{
  198. image{
  199. width: 600rpx;
  200. height: 300rpx;
  201. }
  202. }
  203. }
  204. }
  205. .box{
  206. position: fixed;
  207. left: 50%;
  208. background: $uni-color;
  209. bottom: calc(env(safe-area-inset-bottom) + 150rpx);
  210. color: #fff;
  211. display: flex;
  212. justify-content: center;
  213. align-items: center;
  214. transform: translate(-50%);
  215. border-radius: 20rpx;
  216. height: 80rpx;
  217. font-size: 28rpx;
  218. image{
  219. width: 100%;
  220. height: 100%;
  221. border-radius: 50%;
  222. }
  223. .left{
  224. padding-left: 30rpx;
  225. }
  226. .center{
  227. width: 100rpx;
  228. height: 100rpx;
  229. border-radius: 50%;
  230. background: $uni-color;
  231. margin: 0 20rpx;
  232. margin-top: -30rpx;
  233. box-shadow: 0 0 4rpx 4rpx #ffffff;
  234. }
  235. .right{
  236. padding-right: 30rpx;
  237. }
  238. }
  239. .content{
  240. position: relative;
  241. margin-top: -60rpx;
  242. .grid{
  243. padding-bottom: 30rpx;
  244. background-color: #fff;
  245. // border-radius: 60rpx;
  246. border-top-left-radius: 60rpx;
  247. border-top-right-radius: 60rpx;
  248. // box-shadow: 0 -10rpx 10rpx 10rpx #00000013;
  249. .grid-icon{
  250. width: 80rpx;
  251. height: 80rpx;
  252. margin-bottom: 10rpx;
  253. margin-top: 30rpx;
  254. }
  255. .grid-text{
  256. font-size: 24rpx;
  257. font-weight: 900;
  258. }
  259. }
  260. }
  261. .switchIdentity{
  262. position: fixed;
  263. right: 30rpx;
  264. bottom: 300rpx;
  265. image{
  266. width: 130rpx;
  267. }
  268. }
  269. }
  270. </style>