123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134 |
- <template>
- <template v-if="!seekerList || seekerList.length == 0">
- <a-empty style="height: 100vh;">
- <template #description>
- 无求职者信息
- </template>
- </a-empty>
- </template>
- <template v-else>
- <a-row :gutter="[20,20]">
- <a-col span="24" v-for="(item, index) in seekerList">
- <a-card>
- <div class="talent-box">
- <a-list>
- <a-list-item>
- <template #actions>
- <a-button @click="detail(item)">
- <StarOutlined />
- 预览
- </a-button>
- <a-button>
- <StarOutlined />
- 收藏
- </a-button>
- <a-button>
- 邀请面试
- </a-button>
- </template>
- <a-list-item-meta>
- <template #title>
- {{item.seekername}}
- </template>
- <template #description>
- <div>
- {{item.gender}}
- <a-divider type="vertical" />
- {{item.education_text}}
- <a-divider type="vertical" />
- {{item.now_level1_text}}{{item.now_level2_text}}
- </div>
- <div style="margin-top: 10px; overflow: hidden;
- display: -webkit-box;
- -webkit-line-clamp: 1;
- -webkit-box-orient: vertical;
- text-overflow: ellipsis;">
- <div v-html="item.introduction"></div>
- </div>
- </template>
- <template #avatar>
- <image-container
- :imgObj="{src: '/images/onlylogo.jpg',width: '48px',height:'48px'}"></image-container>
-
- </template>
- </a-list-item-meta>
- </a-list-item>
- </a-list>
- </div>
- </a-card>
-
- </a-col>
- <a-col span="24">
- <a-flex justify="center">
- <a-space>
- <a-pagination hideOnSinglePage :total="commomParams.page.total" @change="getPage" />
- </a-space>
- </a-flex>
- </a-col>
- </a-row>
- <resume-detail v-if="detail_record" :detail_record="detail_record"></resume-detail>
- </template>
- </template>
-
- <script setup lang="ts">
- import { ref, computed, onMounted, defineProps, watch } from 'vue';
- import ResumeDetail from '@/components/jobseeker/resume/detail/index.vue'
- import { PostJobseekerList } from '@/apis/models';
- import { useCommon } from '@/hooks/useCommon';
- let { store, commomParams, dayjs, richOption, ExclamationCircleOutlined, Modal, showOtherModal1 } = useCommon();
- let props = defineProps(['search']);
- let seekerList = ref<object[]>([])
- let loading = ref<Boolean>(true);
-
-
- const getPage = (data : object) => {
- commomParams.value.search.page = data.current;
- commomParams.value.search.pagesize = data.pageSize;
- getData();
- }
- const getData = async () => {
- try {
- loading.value = true;
- let res = await PostJobseekerList(commomParams.value.search);
- loading.value = false;
- seekerList.value = res.data.seekers;
- commomParams.value.page = {
- current: commomParams.value.search.page,
- pageSize: commomParams.value.search.pagesize,
- total: res.data.total,
- pageSizeOptions: ['10', '20', '30', '40'],
- hideOnSinglePage: false,
- showSizeChanger: true
- };
- } catch {
- loading.value = false;
- }
- }
-
-
- const onLoadMore = () => {
- commomParams.value.search.page = commomParams.value.search.page + 1;
- getData();
- }
-
- let detail_record = ref<Object>(null)
- const detail = (record) => {
- detail_record.value = record;
- showOtherModal1()
- }
-
- // onMounted(() => {
- // getData();
- // })
-
- watch(() => [props.search], (newVal) => {
- if (newVal[0] ) {
- commomParams.value.search = newVal[0];
- getData();
- }
- }, { immediate: true })
- </script>
-
- <style scoped lang="less">
-
- </style>
|