招聘网页
您最多选择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>