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.

index.vue 5.1KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175
  1. <template>
  2. <resume-search @searchData="searchData" @clearData="clearData" :search_params="commomParams.search"></resume-search>
  3. <a-c-operation @refresh="clearData" :need_add="false"></a-c-operation>
  4. <a-c-table :data="commomParams.table.data" :columns="commomParams.table.columns" :pagination="commomParams.page"
  5. @page="getPage" :loading="loading">
  6. <template #default="{ record }">
  7. <a-row :gutter="10">
  8. <a-col><a-button type="primary" size="small" primary @click="edit(record)">编辑</a-button></a-col>
  9. <a-col><a-button type="primary" size="small" primary @click="detail(record)">预览</a-button></a-col>
  10. <a-popconfirm title="该简历通过审核?" @confirm="pass(record)">
  11. <a-col v-if="record.status == 1"><a-button type="primary" size="small" >通过</a-button></a-col>
  12. </a-popconfirm>
  13. <a-col v-if="record.status == 1"><a-button type="primary" size="small"
  14. @click="interview(record)" danger>不通过</a-button></a-col>
  15. <!-- <a-popconfirm title="是否要推送该简历到ES?" @confirm="pushEs(record.customer_id)">
  16. <a-col><a-button type="primary" size="small" primary>推送该简历到ES</a-button></a-col>
  17. </a-popconfirm> -->
  18. </a-row>
  19. </template>
  20. </a-c-table>
  21. <resume-add v-if="openForm" :edit_record="edit_record" @successAdd="successAdd" @closeAdd="closeAdd"></resume-add>
  22. <resume-detail :detail_record="detail_record" @closeAdd="closePermission"></resume-detail>
  23. <a-modal v-model:open="openInterview" centered title="不通过原因" @ok="unpass">
  24. <a-textarea v-model:value="form.aduit_memo" placeholder="请输入不通过原因" />
  25. </a-modal>
  26. </template>
  27. <script lang="ts" setup>
  28. import { ref, onMounted, watch, computed, createVNode } from 'vue';
  29. import ResumeSearch from '@/views/jobSeeker/resume/search/index.vue';
  30. import ResumeAdd from '@/views/jobSeeker/resume/add/add.vue';
  31. import ResumeDetail from '@/views/jobSeeker/resume/detail/detail.vue';
  32. import { PostJobseekerList, PostJobapplicantUpdate, PostEsJobseeker , GetCustomerUpdate} from '@/apis/models';
  33. import { useCommon } from '@/hooks/useCommon';
  34. import { cols } from '@/views/jobSeeker/resume/columns';
  35. import { UserOutlined, DownOutlined } from '@ant-design/icons-vue';
  36. let { store, commomParams, showModal, showOtherModal1, message, ExclamationCircleOutlined, Modal } = useCommon();
  37. let loading = ref<Boolean>(true);
  38. let openForm = ref<Boolean>(false);
  39. onMounted(() => {
  40. commomParams.value.search.rand = false
  41. getData();
  42. })
  43. const searchData = (data : object) => {
  44. commomParams.value.search = data
  45. getData();
  46. }
  47. const clearData = (data : object) => {
  48. commomParams.value.search.rand = false
  49. if (data) {
  50. commomParams.value.search = data
  51. } else {
  52. commomParams.value.search = {
  53. page: 1,
  54. pagesize: 10,
  55. sort: 'id',
  56. sortby: 'desc',
  57. keyword: '',
  58. rand: false
  59. }
  60. }
  61. getData();
  62. }
  63. const getPage = (data : object) => {
  64. commomParams.value.search.page = data.current;
  65. commomParams.value.search.pagesize = data.pageSize;
  66. getData();
  67. }
  68. const getData = async () => {
  69. try {
  70. loading.value = true;
  71. let res = await PostJobseekerList(commomParams.value.search);
  72. loading.value = false;
  73. commomParams.value.table.data = res.data.seekers;
  74. commomParams.value.table.columns = cols;
  75. commomParams.value.page = {
  76. current: commomParams.value.search.page,
  77. pageSize: commomParams.value.search.pagesize,
  78. total: res.data.total,
  79. pageSizeOptions: ['10', '20', '30', '40'],
  80. hideOnSinglePage: false,
  81. showSizeChanger: true
  82. };
  83. } catch {
  84. loading.value = false;
  85. }
  86. }
  87. // 编辑
  88. let edit_record = ref<Object>(null)
  89. const edit = (record : object) => {
  90. openForm.value = true
  91. edit_record.value = record;
  92. showModal()
  93. }
  94. const successAdd = () => {
  95. getData();
  96. }
  97. const closeAdd = () => {
  98. edit_record.value = null;
  99. }
  100. // 删除
  101. // const delOneRole = (id : number) => {
  102. // commomParams.value.delRecord = { id: id };
  103. // PostRoleDel(commomParams.value.delRecord).then(res => {
  104. // message.success('删除成功');
  105. // getData();
  106. // })
  107. // }
  108. // 审核
  109. const pass = (record) => {
  110. PostJobapplicantUpdate({ customer_id: record.customer_id, id: record.id, status: 2 }).then(res => {
  111. message.success('审核通过');
  112. })
  113. }
  114. // 邀请面试
  115. let openInterview = ref<Boolean>(false);
  116. let form = {
  117. id: 0,
  118. customer_id: 0,
  119. status: 3,
  120. aduit_memo: ''
  121. }
  122. const interview = (record : Object) => {
  123. openInterview.value = true
  124. form.id = record.id;
  125. form.customer_id = record.customer_id;
  126. form.status = 3
  127. form.aduit_memo = '不通过'
  128. }
  129. const unpass = () => {
  130. PostJobapplicantUpdate(form).then(res => {
  131. message.success('审核不通过');
  132. openInterview.value = false
  133. getData();
  134. })
  135. }
  136. const pushEs = (customer_id) => {
  137. PostEsJobseeker({ customer_ids: [customer_id] }).then(res => {
  138. message.success('推送成功');
  139. })
  140. }
  141. let detail_record = ref<Object>(null)
  142. const detail = (record) => {
  143. detail_record.value = record;
  144. showOtherModal1()
  145. }
  146. const successPermission = () => {
  147. detail_record.value = null;
  148. }
  149. const closePermission = () => {
  150. detail_record.value = null;
  151. }
  152. </script>
  153. <style lang="less" scoped>
  154. </style>