特易招,招聘小程序
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.

337 lines
7.5 KiB

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