recruitment.vue 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368
  1. <!--
  2. * @title 招聘就业
  3. * @author Rockery(1113269755@qq.com)
  4. -->
  5. <template>
  6. <view class="recruitment">
  7. <u-navbar title-color="#FFFFFF" :customBack="navbarCustomBack" :bpay-bottom="false" back-icon-color="#FFFFFF" :background="{background: '#3D5D4C' }" title="招聘就业" class="recruitment-unavbar" />
  8. <z-paging ref="recruitmentPaging"
  9. v-model="recruitmentJobList"
  10. @query="recruitmentQueryList">
  11. <!-- ###################################-- 轮播图 -- ################################### -->
  12. <view class="recruitment-banner" slot="top">
  13. <u-swiper
  14. :list="bannerList"
  15. name="bannerUrl"
  16. border-radius="0"
  17. mode="round"
  18. height="440"
  19. img-mode="scaleToFill"
  20. @click="swiperClick"
  21. ></u-swiper>
  22. </view>
  23. <!-- ###################################-- 请输入您关键词 -- ################################### -->
  24. <view class="recruitment-usearch" slot="top">
  25. <u-search placeholder="请输入您关键词" v-model="headerTopKeyword" :show-action="false" bg-color="#FFFFFF" @search="searchKeyword" @clear="searchKeyword"></u-search>
  26. </view>
  27. <!-- ###################################-- 企业推荐 -- ################################### -->
  28. <view class="u-card-wrap recruitment-recommend" slot="top">
  29. <u-card :show-foot="false" class="recruitment-recommend-card">
  30. <view slot="head">
  31. <view class="recommend-card-head">
  32. <view class="recommend-card-head-title">{{recommendConfigData.title}}</view>
  33. <view class="recommend-card-head-subtitle" @tap="recommendCardMoreClick">
  34. {{recommendConfigData.titlemore}}
  35. <u-icon name="arrow-right" color="#A3A3A3" size="28"></u-icon>
  36. </view>
  37. </view>
  38. </view>
  39. <view slot="body">
  40. <view class="recommend-card-body">
  41. <swiper
  42. v-if="recommendList&&recommendList.length>0"
  43. class="recommend-card-content"
  44. :display-multiple-items="5"
  45. :autoplay="true"
  46. >
  47. <swiper-item v-for="(recommendItem, index) in recommendList" :key="'recommendList' + index">
  48. <view class="swiper-item" @tap="tapRecommendSwiperItem(recommendItem)" :data-id="recommendItem.id" :data-index="index">
  49. <image class="img" :src="recommendItem.logoUrl" mode="aspectFill"></image>
  50. <view class="subject">{{recommendItem.companyName}}</view>
  51. <view class="post u-text-center">
  52. 岗位
  53. <text class="postlink">{{recommendItem.postCount}}</text>个
  54. </view>
  55. </view>
  56. </swiper-item>
  57. <swiper-item v-if="recommendConfigData.listmore">
  58. <view class="swiper-item lookmore" @tap="recommendCardMoreClick">
  59. <view class="moretext">查看更多</view>
  60. </view>
  61. </swiper-item>
  62. </swiper>
  63. </view>
  64. </view>
  65. </u-card>
  66. </view>
  67. <!-- ###################################-- tabs页签 -- ################################### -->
  68. <view class="recruitment-tabs" slot="top">
  69. <u-tabs bg-color="transparent" :list="dataAreaTabsList" @change="dataAreaTabsChange" :current="dataAreaTabsCurrent" />
  70. </view>
  71. <!-- ###################################-- 招聘就业岗位 -- ################################### -->
  72. <view class="recruitment-dataarea">
  73. <view class="recruitment-dataarea-card" v-for="(item,index) in recruitmentJobList" :key="'recruitmentJobList' + index" @tap="tapDataAreaCard(item)">
  74. <view class="dataarea-card-left">
  75. <image :src="item.companyLogoUrl" mode="aspectFill" class="image"></image>
  76. </view>
  77. <view class="dataarea-card-content">
  78. <view class="dataarea-content-left">
  79. <view>{{item.postName}}</view>
  80. <view class="content">{{item.workPlace}}|{{item.workYear}}|{{item.educationBg}}</view>
  81. <view >{{item.companyName}}</view>
  82. </view>
  83. <view class="dataarea-content-right">
  84. <view>{{item.lowestSalary}}k~{{item.highestSalary}}k</view>
  85. <view>&nbsp;</view>
  86. <view>{{item.createTime}}</view>
  87. </view>
  88. </view>
  89. </view>
  90. </view>
  91. </z-paging>
  92. </view>
  93. </template>
  94. <script>
  95. export default {
  96. data() {
  97. return {
  98. headerTopKeyword: '',
  99. bannerList: [],
  100. // 企业推荐列表
  101. recommendList: [],
  102. recruitmentJobList: [],
  103. recommendListData:[
  104. {
  105. id:1,
  106. img:"https://img.xiaopiu.com/userImages/img88517697eccbd8.jpg",
  107. subject:"顺丰快递",
  108. postNumber: 10,
  109. postCompany: '顺丰速运有限公司贵州分公司',
  110. postName: '快递员',
  111. postContent: '云岩区|经验不限|中等专科',
  112. postWage: '4.0k-8.0k',
  113. deadline: this.$u.timeFormat(new Date().getTime(), 'yyyy-mm-dd')
  114. },
  115. {
  116. id:2,
  117. img:"https://img.xiaopiu.com/userImages/img88317697ec8588.jpg",
  118. subject:"中国平安",
  119. postNumber: 14,
  120. postCompany: '中国平安贵州分公司',
  121. postName: '保险员',
  122. postContent: '贵州省|经验不限|中等专科',
  123. postWage: '4.0k-8.0k',
  124. deadline: this.$u.timeFormat(new Date().getTime(), 'yyyy-mm-dd')
  125. },
  126. {
  127. id:3,
  128. img:"https://img.xiaopiu.com/userImages/img205717698ca4710.png",
  129. subject:"保利贵州",
  130. postNumber: 8,
  131. postCompany: '保利贵州酒店管理有限公司',
  132. postName: '保安员',
  133. postContent: '贵州省|经验不限|中等专科',
  134. postWage: '4.0k-8.0k',
  135. deadline: this.$u.timeFormat(new Date().getTime(), 'yyyy-mm-dd')
  136. },
  137. {
  138. id:4,
  139. img:"https://img.xiaopiu.com/userImages/img87917697ec0c70.png",
  140. subject:"海大装饰",
  141. postNumber: 18,
  142. postCompany: '海大装饰有限公司',
  143. postName: '设计师',
  144. postContent: '贵州省 | 设计师经验 | 中等专科',
  145. postWage: '4.0k-8.0k',
  146. deadline: this.$u.timeFormat(new Date().getTime(), 'yyyy-mm-dd')
  147. },
  148. {
  149. id:5,
  150. img:"https://img.xiaopiu.com/userImages/img87717697ebe178.jpg",
  151. subject:"永辉超市",
  152. postNumber: 10,
  153. postCompany: '永辉超市有限公司',
  154. postName: '收银员',
  155. postContent: '贵州省 | 相关经验 | 中等专科',
  156. postWage: '4.0k-8.0k',
  157. deadline: this.$u.timeFormat(new Date().getTime(), 'yyyy-mm-dd')
  158. },
  159. {
  160. id:5,
  161. img:"https://cube.elemecdn.com/6/94/4d3ea53c084bad6931a56d5158a48jpeg.jpeg",
  162. subject:"研发测试岗位",
  163. postNumber: 99,
  164. postCompany: '智能科技有限公司',
  165. postName: '研发员',
  166. postContent: '贵州省|经验不限|中等专科',
  167. postWage: '4.0k-8.0k',
  168. deadline: this.$u.timeFormat(new Date().getTime(), 'yyyy-mm-dd')
  169. }
  170. ],
  171. recommendConfigData:{
  172. title:'企业推荐',
  173. titlemore:'更多',
  174. listmore: false
  175. },
  176. dataAreaTabsCurrent: 0,
  177. dataAreaTabsList: [
  178. {
  179. name: '最新',
  180. text: '1'
  181. },
  182. // {
  183. // name: '附近',
  184. // count: 7
  185. // }, {
  186. // name: '筛选'
  187. // }
  188. ]
  189. }
  190. },
  191. onLoad() {
  192. // console.log(this.$u.config.v);
  193. // 获取企业推荐列表
  194. this.getRecommendList();
  195. },
  196. onShow() {
  197. this.getBannerList();
  198. },
  199. methods: {
  200. /**
  201. * 导航栏返回事件
  202. */
  203. navbarCustomBack(){
  204. this.$u.route({
  205. type: 'switchTab',
  206. url: 'pages/index/index'
  207. });
  208. },
  209. getBannerList(){
  210. this.$u.api.getIndexBannerList()
  211. .then(res=>{
  212. this.bannerList = res.data;
  213. this.bannerList = [];
  214. this.bannerList.push(
  215. {
  216. bannerUrl: 'https://img.xiaopiu.com/userImages/img146217698746a98.jpg',
  217. content: '<p>代码固定测试内容999997</p>',
  218. id: "999997",
  219. name: "代码固定测试999997"
  220. }
  221. );
  222. this.bannerList.push(
  223. {
  224. bannerUrl: 'https://img.xiaopiu.com/userImages/img14641769874a530.png',
  225. content: '<p>代码固定测试内容999998</p>',
  226. id: "999998",
  227. name: "代码固定测试999998"
  228. }
  229. );
  230. this.bannerList.push(
  231. {
  232. bannerUrl: 'https://img.xiaopiu.com/userImages/img14661769874c088.jpg',
  233. content: '<p>代码固定测试内容999999</p>',
  234. id: "999999",
  235. name: "代码固定测试999999"
  236. }
  237. );
  238. })
  239. },
  240. // 轮播图点击
  241. swiperClick (index) {
  242. // console.log('swiperClick',index);
  243. if(this.bannerList[index].jumpUrl){
  244. let url = this.bannerList[index].jumpUrl.split('#')[1];
  245. this.$u.route({
  246. url: url,
  247. });
  248. }else{
  249. this.$u.route({
  250. url: 'pages/bannerDetails/bannerDetails',
  251. params: {
  252. id: this.bannerList[index].id
  253. }
  254. })
  255. }
  256. },
  257. /**
  258. * 获取企业推荐列表
  259. */
  260. getRecommendList() {
  261. this.$u.api.recruitment.getRecommendList().then(res => {
  262. if (res.code === 200) {
  263. this.recommendList = res.data || [];
  264. } else {
  265. uni.showToast({
  266. icon: 'none',
  267. title: res.msg
  268. });
  269. }
  270. }).catch(err => {
  271. uni.showToast({
  272. title: '系统异常!',
  273. type: 'error'
  274. });
  275. });
  276. },
  277. /**
  278. * 获取招聘就业岗位列表
  279. * @param { Number } newest
  280. * @param { Number } pageNum
  281. * @param { Number } pageSize
  282. * @param { String } postName
  283. */
  284. getRecruitmentJobList(newest, pageNum, pageSize, postName) {
  285. this.$u.api.recruitment.getRecruitmentJobList({
  286. pageNum,
  287. pageSize,
  288. postName,
  289. newest
  290. }).then(res => {
  291. if (res.code === 200) {
  292. this.$refs.recruitmentPaging.complete(res.rows || []);
  293. } else {
  294. uni.showToast({
  295. icon: 'none',
  296. title: res.msg
  297. });
  298. this.$refs.recruitmentPaging.complete([]);
  299. }
  300. }).catch(err => {
  301. uni.showToast({
  302. title: '系统异常!',
  303. type: 'error'
  304. });
  305. this.$refs.recruitmentPaging.complete([]);
  306. });
  307. },
  308. /**
  309. * @param { String } value
  310. */
  311. searchKeyword(value) {
  312. this.getRecruitmentJobList(this.dataAreaTabsList[this.dataAreaTabsCurrent]?.text, 1, 10, this.headerTopKeyword);
  313. },
  314. // tab栏切换
  315. dataAreaTabsChange(index) {
  316. this.dataAreaTabsCurrent = index;
  317. this.getRecruitmentJobList(this.dataAreaTabsList[index]?.text, 1, 10, this.headerTopKeyword);
  318. },
  319. /**
  320. * 列表加载触发
  321. */
  322. recruitmentQueryList(pageNo, pageSize) {
  323. if (this.dataAreaTabsList.length > 0) {
  324. this.getRecruitmentJobList(this.dataAreaTabsList[this.dataAreaTabsCurrent]?.text, pageNo, pageSize, this.headerTopKeyword);
  325. }
  326. },
  327. recommendCardMoreClick(index) {
  328. console.log("recommendCardMoreClick: ",index);
  329. this.$u.route({
  330. url: 'pages/cooperativeEnterprise/cooperativeEnterprise',
  331. params: {
  332. flag: 'recruitment'
  333. }
  334. });
  335. },
  336. tapRecommendSwiperItem(param){
  337. this.$u.route({
  338. url: 'pages/businessDetails/businessDetails',
  339. params: {
  340. id: param?.id,
  341. flag: 'recruitment'
  342. }
  343. });
  344. },
  345. tapDataAreaCard(param){
  346. this.$u.route({
  347. url: 'pages/jobDetails/jobDetails',
  348. params: {
  349. id: param?.id
  350. }
  351. });
  352. }
  353. }
  354. }
  355. </script>
  356. <style lang="scss" scoped>
  357. @import './scss/recruitment.scss';
  358. </style>