招聘网页
Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.

index.vue 5.0KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172
  1. <template>
  2. <div class="content-padding-inline" style="margin: 30px 0;">
  3. <a-row :gutter="[20,20]" type="flex" justify="center">
  4. <a-col span="18">
  5. <template v-if="!jobList || jobList.length == 0">
  6. <a-empty style="height: 100vh;">
  7. <template #description>
  8. 无职位信息
  9. </template>
  10. </a-empty>
  11. </template>
  12. <a-row :gutter="[10,20]">
  13. <a-col span="8" v-for="(item, index) in jobList">
  14. <a-flex vertical style="width: 100%;background-color: #fff;border-radius: 10px;padding: 20px;">
  15. <a-space direction="vertical" :size="10">
  16. <a-flex justify="space-between" style="width: 100%;">
  17. <div style="font-size: 18px; font-weight: 600;">{{item.name}}</div>
  18. <div style="font-size: 18px;color: #4FBE70;">{{item.pay_range_text}}</div>
  19. </a-flex>
  20. <a-flex style="width: 100%;">
  21. <a-tag>{{item.experience_text ? item.experience_text : '不限'}}</a-tag>
  22. <a-tag>{{item.certification_text ? item.certification_text : '不限'}}</a-tag>
  23. <a-tag>{{item.school_degree_text ? item.school_degree_text : '不限'}}</a-tag>
  24. <a-tag>{{item.profelevel_text ? item.profelevel_text : '不限'}}</a-tag>
  25. </a-flex>
  26. </a-space>
  27. <a-divider />
  28. <a-space direction="vertical">
  29. <a-flex justify="space-between" style="width: 100%;">
  30. <div>{{item.full_name}}</div>
  31. <a-button type="primary" size="small"
  32. @click="toDetail(item.id, item.company_id)">查看详情</a-button>
  33. </a-flex>
  34. <a-flex style="width: 100%;color: #bebebe;">
  35. {{item.locations ? item.locations[0].name : '未知地址'}}
  36. </a-flex>
  37. </a-space>
  38. </a-flex>
  39. </a-col>
  40. <a-col span="24">
  41. <a-flex justify="center">
  42. <a-space>
  43. <a-pagination hideOnSinglePage :total="commomParams.page.total" @change="getPage" />
  44. </a-space>
  45. </a-flex>
  46. </a-col>
  47. </a-row>
  48. </a-col>
  49. </a-row>
  50. </div>
  51. <!-- 企业显示 -->
  52. <!-- <a-tabs v-model:activeKey="activeKey">
  53. <a-tab-pane key="1" tab="推荐人才">
  54. <a-row :gutter="[10,10]">
  55. <a-col span="12" v-for="(item, index) in companyList">
  56. <job-talents></job-talents>
  57. </a-col>
  58. </a-row>
  59. <div style="display: flex;align-items: center;justify-content: center;padding: 30px;font-size: 24px;">查看更多
  60. </div>
  61. <a-row :gutter="[10,10]">
  62. <a-col span="24" v-for="(item, index) in companyList">
  63. <job-talents></job-talents>
  64. </a-col>
  65. <a-col span="24">
  66. <a-pagination v-model:current="current" :total="500" style="text-align: center;" />
  67. </a-col>
  68. </a-row>
  69. </a-tab-pane>
  70. <a-tab-pane key="2" tab="最新简历" force-render>Content of Tab Pane 2</a-tab-pane>
  71. <a-tab-pane key="3" tab="应届毕业生">Content of Tab Pane 3</a-tab-pane>
  72. </a-tabs> -->
  73. </template>
  74. <script setup lang="ts">
  75. import { ref, computed, onMounted, defineEmits } from 'vue';
  76. import { GetJobseekerReommendJob } from '@/apis/models';
  77. import { router } from '@/router';
  78. import { useCommon } from '@/hooks/useCommon';
  79. let { store, commomParams, dayjs, richOption, ExclamationCircleOutlined, Modal } = useCommon();
  80. const emit = defineEmits();
  81. let loading = ref<Boolean>(true);
  82. let jobList = ref([]);
  83. let total = ref<Number>(0)
  84. const getPage = (page, pageSize) => {
  85. commomParams.value.search.page = page;
  86. commomParams.value.search.pagesize = pageSize;
  87. getData();
  88. }
  89. const getData = async () => {
  90. try {
  91. loading.value = true;
  92. let res = await GetJobseekerReommendJob(commomParams.value.search);
  93. loading.value = false;
  94. jobList.value = res.data.jobs;
  95. commomParams.value.page = {
  96. current: commomParams.value.search.page,
  97. pageSize: commomParams.value.search.pagesize,
  98. total: res.data.total,
  99. pageSizeOptions: ['10', '20', '30', '40'],
  100. hideOnSinglePage: false,
  101. showSizeChanger: true
  102. };
  103. } catch {
  104. loading.value = false;
  105. }
  106. }
  107. const toDetail = (job_id : Number, company_id : Number) => {
  108. sessionStorage.setItem('job_id', job_id)
  109. sessionStorage.setItem('tab_key', 2)
  110. sessionStorage.setItem('pubilc_id', company_id)
  111. sessionStorage.setItem('mode', 'detail')
  112. store.commit('getPageType', {
  113. pageType: ''
  114. })
  115. store.commit('setShowLoginBox', {
  116. showLoginBox: false
  117. })
  118. sessionStorage.setItem('pageType', '')
  119. store.commit('permissions/SET_PERMISSION', null)
  120. store.commit('permissions/SET_MENU', [])
  121. // router.push({
  122. // path: '/personal'
  123. // })
  124. window.open('/company/detail', "_blank");
  125. }
  126. onMounted(() => {
  127. getData();
  128. })
  129. </script>
  130. <style lang="less" scoped>
  131. .job-box {
  132. display: flex;
  133. flex-direction: column;
  134. justify-content: space-around;
  135. // align-items: center;
  136. width: 100%;
  137. .job-title {
  138. padding: 20px;
  139. background-color: #ffffff;
  140. .aaaa {
  141. display: flex;
  142. justify-content: space-between;
  143. }
  144. }
  145. .job-company {
  146. padding: 20px;
  147. background-color: #cccccc;
  148. .aaaa {
  149. display: flex;
  150. justify-content: space-between;
  151. }
  152. }
  153. }
  154. .mt10 {
  155. margin-bottom: 10px;
  156. }
  157. </style>