招聘网页
Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.

1 рік тому
1 рік тому
1 рік тому
1 рік тому
1 рік тому
1 рік тому
1 рік тому
1 рік тому
1 рік тому
1 рік тому
1 рік тому
1 рік тому
1 рік тому
1 рік тому
1 рік тому
1 рік тому
1 рік тому
1 рік тому
1 рік тому
1 рік тому
1 рік тому
1 рік тому
1 рік тому
1 рік тому
1 рік тому
1 рік тому
1 рік тому
1 рік тому
1 рік тому
1 рік тому
1 рік тому
1 рік тому
1 рік тому
1 рік тому
1 рік тому
1 рік тому
1 рік тому
1 рік тому
1 рік тому
1 рік тому
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256
  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. <div style="width: 100%; background-color: #fff;">
  6. <a-list item-layout="vertical">
  7. <a-list-item>
  8. <a-list-item-meta>
  9. <template #title>
  10. {{basic.contact}}
  11. </template>
  12. <template #description>
  13. 企业编号:{{basic.id}}
  14. </template>
  15. <template #avatar>
  16. <image-container :need="true"
  17. :imgObj="{src: '/images/onlylogo.jpg',width: '48px',height:'48px'}"></image-container>
  18. </template>
  19. </a-list-item-meta>
  20. <div style="margin-left: 64px;">
  21. <a-descriptions :column="2">
  22. <a-descriptions-item
  23. label="登录账号">{{basic.login_name ? basic.login_name : '未知'}}</a-descriptions-item>
  24. <a-descriptions-item
  25. label="会员始止时间">{{basic.start_date}}至{{basic.end_date}}</a-descriptions-item>
  26. <a-descriptions-item
  27. label="联系电话">{{basic.mobile ? basic.mobile : '未填写'}}</a-descriptions-item>
  28. <a-descriptions-item label="服务终止日期">{{basic.end_date}}</a-descriptions-item>
  29. <a-descriptions-item
  30. label="电子邮箱">{{basic.email ? basic.email : '未填写'}}</a-descriptions-item>
  31. <a-descriptions-item
  32. label="被访问次数">{{basic.click_count ? basic.click_count : '0'}}次</a-descriptions-item>
  33. </a-descriptions>
  34. </div>
  35. </a-list-item>
  36. </a-list>
  37. </div>
  38. </a-col>
  39. <a-col span="18">
  40. <div style="width: 100%; background-color: #fff;padding: 10px 20px;">
  41. 当月已查看<a-tag :bordered="false" color="red">{{basic.month_look_resume_qty}}</a-tag>份简历,还可以查看<a-tag
  42. :bordered="false" color="green">{{basic.limit_resume_qty}}</a-tag>份简历
  43. </div>
  44. </a-col>
  45. <a-col span="18">
  46. <a-space align="cneter" direction="vertical">
  47. <div style="width: 100%;font-size: 24px;">
  48. 推荐简历
  49. </div>
  50. <a-row :gutter="[20,20]">
  51. <a-col span="12" v-for="(item, index) in jobList">
  52. <div class="talent-box">
  53. <a-list>
  54. <a-list-item>
  55. <template #actions>
  56. <a-button @click="putInTatent(item.customer_id)">
  57. 放入人才库
  58. </a-button>
  59. <a-button @click="interview(item)" >
  60. 邀请面试
  61. </a-button>
  62. </template>
  63. <a-list-item-meta>
  64. <template #title>
  65. <div @click="detail(item)"> <span style="font-weight: bold;font-size: 16px;cursor: pointer;">{{item.seekername}} </span></div>
  66. </template>
  67. <template #description>
  68. <div>
  69. {{item.gender}}
  70. <a-divider type="vertical" />
  71. {{item.education_text}}
  72. <a-divider type="vertical" />
  73. {{item.now_level1_text}}{{item.now_level2_text}}
  74. </div>
  75. <div style="margin-top: 10px; overflow: hidden;
  76. display: -webkit-box;
  77. -webkit-line-clamp: 1;
  78. -webkit-box-orient: vertical;
  79. text-overflow: ellipsis;">
  80. <div v-html="item.introduction"></div>
  81. </div>
  82. </template>
  83. <template #avatar>
  84. <image-container :need="true"
  85. :imgObj="{src: item.photo ? imageprefix+ item.photo : '/images/onlylogo.jpg',width: '48px',height:'48px'}"></image-container>
  86. </template>
  87. </a-list-item-meta>
  88. </a-list-item>
  89. </a-list>
  90. </div>
  91. </a-col>
  92. <a-col span="24" v-if="jobList.length > 0">
  93. <a-flex justify="center">
  94. <a-button size="large" type="primary" @click="onLoadMore">查看更多</a-button>
  95. </a-flex>
  96. </a-col>
  97. </a-row>
  98. </a-space>
  99. </a-col>
  100. </a-row>
  101. </div>
  102. <a-modal v-model:open="openInterview" centered title="面试邀请" @ok="interviewOk">
  103. <a-space direction="vertical" style="width: 100%;">
  104. <a-select v-model:value="position_name" @change="positionChange"
  105. placeholder="请进行搜索选择职位" show-search :filter-option="false" label-in-value
  106. @search="positionSearch" size="large" style="width: 100%;">
  107. <a-select-option v-for="item in position_list" :key="item.id" :value="item.id"
  108. :label="item.name" label-in-value>{{item.name}}</a-select-option>
  109. </a-select>
  110. <a-date-picker v-model:value="time" @Change="timeChange" show-time style="width: 100%;" placeholder="请选择面试日期"
  111. size="large" :disabled-date="disabledDate" />
  112. </a-space>
  113. </a-modal>
  114. <resume-detail v-if="detail_record" :detail_record="detail_record"></resume-detail>
  115. </template>
  116. <script setup lang="ts">
  117. import { ref, onMounted, computed, defineEmits, createVNode } from 'vue';
  118. import JobTalents from '@/components/job/talents/index.vue'
  119. import ResumeDetail from '@/components/jobseeker/resume/detail/index.vue'
  120. import { PostCompanyProfile, GetCompanyRecommentResume, PostCompanyTalentPoolAdd, PostCompanyResumeInterviewAdd ,PostCompanyJobList} from '@/apis/models';
  121. import { warnToast, successToast } from '@/utils/toastHelper';
  122. import { useCommon } from '@/hooks/useCommon';
  123. let { commomParams, ExclamationCircleOutlined, Modal, dayjs, disabledDate, showOtherModal1 , imageprefix} = useCommon();
  124. const dayjsRef = ref(dayjs);
  125. let jobList = ref<Object[]>([])
  126. let basic = ref<Object>({})
  127. let page = ref<Number>(1)
  128. const onLoadMore = () => {
  129. page.value = page.value + 1;
  130. getData();
  131. }
  132. const getData = () => {
  133. GetCompanyRecommentResume({ page: page.value, pagesize: 10 }).then(res => {
  134. jobList.value = res.data.list ? jobList.value.concat(res.data.list) : jobList.value.concat([])
  135. })
  136. }
  137. // 邀请面试
  138. let openInterview = ref<Boolean>(false);
  139. let form = {
  140. job_id: '',
  141. customer_id: '',
  142. interview_date_time: ''
  143. }
  144. const interview = (record : Object) => {
  145. positionSearch('')
  146. console.log(record)
  147. openInterview.value = true
  148. form.job_id = '';
  149. form.customer_id = record.customer_id;
  150. form.interview_date_time = ''
  151. time.value = '';
  152. position_name.value = null;
  153. }
  154. // 选择职位
  155. let position_list = ref<Object[]>([])
  156. let position_name = ref<String>(null)
  157. const positionSearch = (val) => {
  158. PostCompanyJobList({ keyword: val }).then(res => {
  159. position_list.value = res.data.list;
  160. })
  161. }
  162. const positionChange = (val : Object) => {
  163. position_name.value = val.option.label;
  164. form.job_id = Number(val.key);
  165. }
  166. let time = ref<String>('');
  167. const timeChange = (val) => {
  168. form.interview_date_time = dayjsRef.value(val).format('YYYY-MM-DD HH:mm:ss');
  169. }
  170. const interviewOk = () => {
  171. console.log(form)
  172. if (!form.interview_date_time) {
  173. warnToast('请选择面试时间')
  174. return;
  175. } else {
  176. PostCompanyResumeInterviewAdd(form).then(res => {
  177. successToast('已发送邀请')
  178. openInterview.value = false;
  179. jobList.value = []
  180. getData();
  181. })
  182. }
  183. }
  184. let detail_record = ref<Object>(null)
  185. const detail = (record) => {
  186. detail_record.value = record;
  187. showOtherModal1()
  188. }
  189. // 放入人才库
  190. const putInTatent = (id) => {
  191. Modal.confirm({
  192. title: `是否要放入人才库`,
  193. centered: true,
  194. icon: createVNode(ExclamationCircleOutlined),
  195. onOk() {
  196. PostCompanyTalentPoolAdd({ customer_id: id }).then(res => {
  197. successToast('已放入人才库')
  198. jobList.value = []
  199. getData();
  200. })
  201. },
  202. onCancel() {
  203. },
  204. });
  205. }
  206. onMounted(() => {
  207. PostCompanyProfile().then(res => {
  208. basic.value = res.data
  209. })
  210. getData();
  211. })
  212. </script>
  213. <style scoped lang="less">
  214. .talent-box {
  215. border-radius: 8px;
  216. background-color: #fff;
  217. }
  218. .applyRouteStyles(@routeName) {
  219. & when (@routeName =company) {
  220. :deep(.ant-list-item-meta) {
  221. flex: none !important;
  222. width: 40% !important;
  223. }
  224. :deep(.ant-list-item-action) {
  225. margin-inline-start: 0 !important;
  226. }
  227. }
  228. }
  229. // :deep(.ant-list-item-meta) {
  230. // flex: none !important;
  231. // width: 40% !important;
  232. // }
  233. // :deep(.ant-list-item-action) {
  234. // margin-inline-start: 0 !important;
  235. // }
  236. </style>