招聘网页
Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.

index.vue 3.4KB

před 1 rokem
před 1 rokem
před 1 rokem
před 1 rokem
před 1 rokem
před 1 rokem
před 1 rokem
před 1 rokem
před 1 rokem
před 1 rokem
před 1 rokem
před 1 rokem
před 1 rokem
před 1 rokem
před 1 rokem
před 1 rokem
před 1 rokem
před 1 rokem
před 1 rokem
před 1 rokem
před 1 rokem
před 1 rokem
před 1 rokem
před 1 rokem
před 1 rokem
před 1 rokem
před 1 rokem
před 1 rokem
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. <template>
  2. <a-search @searchData="searchData" @clearData="clearData" :search_params="commomParams.search"></a-search>
  3. <a-biaoge :data="commomParams.table.data" :columns="commomParams.table.columns" :pagination="commomParams.page"
  4. @page="getPage" :loading="loading">
  5. <template #meet_status="{ record }">
  6. <span v-if="record.status == 1">开启</span>
  7. <span v-if="record.status == 2">关闭</span>
  8. </template>
  9. <template #default="{ record }">
  10. <a-row :gutter="20">
  11. <a-popconfirm title="是否要申请参加该招聘会?" @confirm="applyFor(record.id)">
  12. <a-col><a-button type="primary" size="small">申请</a-button></a-col>
  13. </a-popconfirm>
  14. <a-popconfirm placement="left" ok-text="关闭" @confirm="confirm">
  15. <template #icon></template>
  16. <template #title>
  17. <a-card style="width: 600px; overflow: auto;">
  18. <a-card-meta :title="detailData.title" >
  19. <template #description>
  20. <div>
  21. 发布时间: {{detailData.open_date}}
  22. </div>
  23. <div>
  24. 招聘会地点: {{detailData.address}}
  25. </div>
  26. </template>
  27. </a-card-meta>
  28. <a-divider />
  29. <div style="height: 600px; overflow: auto;">
  30. <div v-html="detailData.content"></div>
  31. </div>
  32. </a-card>
  33. </template>
  34. <a-button type="primary" size="small" @click="toDetail(record)">详情</a-button>
  35. </a-popconfirm>
  36. </a-row>
  37. </template>
  38. </a-biaoge>
  39. </template>
  40. <script setup lang="ts">
  41. import { ref, onMounted, computed } from 'vue';
  42. import he from 'he';
  43. import { PostRecruitmentList, PostRecruitmentbookAdd, PostRecruitmentBookcompany } from '@/apis/models';
  44. import { useCommon } from '@/hooks/useCommon';
  45. import { cols } from '@/components/company/meet/subscribe/columns';
  46. import ASearch from '@/components/company/meet/subscribe/search.vue';
  47. import { warnToast, successToast } from '@/utils/toastHelper';
  48. let { commomParams } = useCommon();
  49. let loading = ref<Boolean>(true);
  50. onMounted(() => {
  51. commomParams.value.search.status = 1
  52. getData(commomParams.value.search);
  53. })
  54. const searchData = (data : object) => {
  55. commomParams.value.search = data
  56. getData();
  57. }
  58. const clearData = (data : object) => {
  59. if (data) {
  60. commomParams.value.search = data
  61. } else {
  62. commomParams.value.search = {
  63. page: 1,
  64. pagesize: 10,
  65. sort: 'id',
  66. sortby: 'asc',
  67. keyword: ''
  68. }
  69. }
  70. getData();
  71. }
  72. const getPage = (data : object) => {
  73. commomParams.value.search.page = data.current;
  74. commomParams.value.search.pagesize = data.pageSize;
  75. getData();
  76. }
  77. const getData = async () => {
  78. try {
  79. loading.value = true;
  80. let res = await PostRecruitmentList(commomParams.value.search);
  81. loading.value = false;
  82. commomParams.value.table.data = res.data.recruitments;
  83. commomParams.value.table.columns = cols;
  84. commomParams.value.page = {
  85. current: commomParams.value.search.page,
  86. pageSize: commomParams.value.search.pagesize,
  87. total: res.data.total,
  88. pageSizeOptions: ['10', '20', '30', '40'],
  89. hideOnSinglePage: false,
  90. showSizeChanger: true
  91. };
  92. } catch {
  93. loading.value = false;
  94. }
  95. }
  96. // 申请
  97. const applyFor = (val) => {
  98. PostRecruitmentbookAdd({ recruitment_id: val, company_id: 0 }).then(res => {
  99. successToast('预定成功')
  100. })
  101. }
  102. // 详情
  103. let detailData = ref<object>({})
  104. const toDetail = (data) => {
  105. detailData.value = data
  106. detailData.value.content = he.decode(detailData.value.content)
  107. }
  108. </script>
  109. <style scoped lang="less">
  110. </style>