|
@@ -1,5 +1,5 @@
|
|
|
<template>
|
|
|
- <ion-page class="list-page company-list-page">
|
|
|
+ <ion-page class="list-page">
|
|
|
<ion-header class="header-theme2">
|
|
|
<ion-toolbar>
|
|
|
<ion-buttons slot="start">
|
|
@@ -15,19 +15,49 @@
|
|
|
<br/>
|
|
|
<h2>{{ searchParams.professionName }}</h2>
|
|
|
</ion-label>
|
|
|
+ <ion-button id="popover-checkbox" @click="popoverCheckboxIsOpen = true" slot="end"
|
|
|
+ style="height: 33px;width: 90px;margin-left: 10px;--box-shadow: none;--border-radius: 14px;">招聘岗位筛选
|
|
|
+ </ion-button>
|
|
|
+ <ion-popover size="auto" trigger="popover-checkbox" :is-open="popoverCheckboxIsOpen" :backdrop-dismiss="false"
|
|
|
+ :dismiss-on-select="false">
|
|
|
+ <ion-content>
|
|
|
+ <ion-list>
|
|
|
+ <ion-item v-for="(record,key) in recommendPostWhereList" :key="key">
|
|
|
+ <ion-checkbox :detail="false" v-model="record.check" label-placement="end">{{ record.name }}
|
|
|
+ </ion-checkbox>
|
|
|
+ </ion-item>
|
|
|
+ <ion-item>
|
|
|
+ <ion-button @click="onRestRecommendPostWhere" slot="end" fill="clear" size="small">重置</ion-button>
|
|
|
+ <ion-button @click="onPopoverConfirm" slot="end" size="small">确定</ion-button>
|
|
|
+ </ion-item>
|
|
|
+ </ion-list>
|
|
|
+ </ion-content>
|
|
|
+ </ion-popover>
|
|
|
</ion-item>
|
|
|
- <ion-list class="list-content">
|
|
|
- <ion-item v-for="(record,key) in dataList" detail :key="key">
|
|
|
- <ion-label>
|
|
|
- <h2>{{ record.professionName }}</h2>
|
|
|
- <p>单位:{{ record.companyName }}</p>
|
|
|
- <p>薪资待遇:{{ record.minSalary }}至{{ record.maxSalary }}元</p>
|
|
|
- </ion-label>
|
|
|
- <ion-avatar aria-hidden="true" class="container" slot="end">
|
|
|
- <ion-text style="text-align:right;" @click="onRecommend(record)">推荐</ion-text>
|
|
|
- </ion-avatar>
|
|
|
- </ion-item>
|
|
|
- </ion-list>
|
|
|
+ <div class="bw-vue-list">
|
|
|
+ <div class="list-content">
|
|
|
+ <ion-list>
|
|
|
+ <ion-item v-for="(record,key) in dataList" :key="key">
|
|
|
+ <ion-label>
|
|
|
+ <h2>{{ record.professionName }}</h2>
|
|
|
+ <p>单位:{{ record.companyName }}</p>
|
|
|
+ <div class="multi-title">
|
|
|
+ <p>
|
|
|
+ 学历:{{ record.cultureRankName }}
|
|
|
+ </p>
|
|
|
+ <p>
|
|
|
+ 工作年限:{{ record.workYearName }}
|
|
|
+ </p>
|
|
|
+ </div>
|
|
|
+ <p>薪资待遇:{{ record.minSalary }}至{{ record.maxSalary }}元</p>
|
|
|
+ </ion-label>
|
|
|
+ <ion-avatar aria-hidden="true" class="container" slot="end">
|
|
|
+ <ion-button size="small" @click="onRecommend(record)" fill="outline">推荐</ion-button>
|
|
|
+ </ion-avatar>
|
|
|
+ </ion-item>
|
|
|
+ </ion-list>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
<b-empty v-if="dataList.length<=0" :loading="loading"/>
|
|
|
<ion-infinite-scroll threshold="100px" @ionInfinite="onScroll($event)">
|
|
|
<ion-infinite-scroll-content
|
|
@@ -48,6 +78,7 @@ import {computed, defineComponent, reactive, ref, watch} from 'vue';
|
|
|
import {arrowBackOutline, addCircleOutline} from 'ionicons/icons';
|
|
|
import {alertController, IonIcon, onIonViewDidEnter} from '@ionic/vue';
|
|
|
import {getRecommendCompanyPostList, addRecommend} from "@/api/recommendmgt";
|
|
|
+import {getSysDictionaryList} from '@/api/system/dictionary'
|
|
|
|
|
|
export default defineComponent({
|
|
|
name: 'RecommendCompanyPost',
|
|
@@ -69,19 +100,35 @@ export default defineComponent({
|
|
|
jobHuntID: '',
|
|
|
professionID: '',
|
|
|
professionName: null,
|
|
|
- type: 0
|
|
|
+ type: 0,
|
|
|
+ parentProfessionID: '',
|
|
|
+ cultureRank: null,
|
|
|
+ workYear: null,
|
|
|
+ minSalary: null,
|
|
|
+ maxSalary: null
|
|
|
})
|
|
|
+ const searchParamsCache = reactive({
|
|
|
+ professionID: '',
|
|
|
+ parentProfessionID: '',
|
|
|
+ cultureRank: null,
|
|
|
+ workYear: null,
|
|
|
+ minSalary: null,
|
|
|
+ maxSalary: null
|
|
|
+ });
|
|
|
const dataList = ref<any>([]);
|
|
|
const addRecommendList = ref<any>([]);
|
|
|
- const colors = ref(["secondary", "tertiary", "success", "warning"]);
|
|
|
+ const recommendPostWhereList = ref<any>([]);
|
|
|
+ const popoverCheckboxIsOpen = ref<boolean>(false);
|
|
|
+
|
|
|
+ const getRecommendTypeList = () => {
|
|
|
+ getSysDictionaryList('RecommendPostWhere').then((data) => {
|
|
|
+ recommendPostWhereList.value = data;
|
|
|
+ recommendPostWhereList.value[0].check = true;
|
|
|
+ });
|
|
|
+ };
|
|
|
|
|
|
const loadData = async function () {
|
|
|
loading.value = true;
|
|
|
- searchParams.jobHuntID = route.query.jobHuntID as any;
|
|
|
- searchParams.jobUserName = route.query.jobUserName as any;
|
|
|
- searchParams.professionID = route.query.professionID as any;
|
|
|
- searchParams.professionName = route.query.professionName as any;
|
|
|
- searchParams.type = route.query.type as any;
|
|
|
getRecommendCompanyPostList(searchParams).then((data: any) => {
|
|
|
dataList.value = dataList.value.concat(data.list);
|
|
|
total.value = data.total;
|
|
@@ -99,6 +146,30 @@ export default defineComponent({
|
|
|
}, 500);
|
|
|
}
|
|
|
|
|
|
+ const onPopoverConfirm = () => {
|
|
|
+ const list = recommendPostWhereList.value.filter((x: any) => x.check == true).map((x: any) => x.value);
|
|
|
+
|
|
|
+ searchParams.professionID = list.findIndex((x: any) => x == 1) >= 0 ? searchParamsCache.professionID : "";
|
|
|
+ searchParams.cultureRank = list.findIndex((x: any) => x == 2) >= 0 ? searchParamsCache.cultureRank : null;
|
|
|
+ searchParams.workYear = list.findIndex((x: any) => x == 3) >= 0 ? searchParamsCache.workYear : null;
|
|
|
+ if (list.findIndex((x: any) => x == 4) >= 0) {
|
|
|
+ searchParams.minSalary = searchParamsCache.minSalary;
|
|
|
+ searchParams.maxSalary = searchParamsCache.maxSalary;
|
|
|
+ } else {
|
|
|
+ searchParams.minSalary = null;
|
|
|
+ searchParams.maxSalary = null;
|
|
|
+ }
|
|
|
+ searchParams.parentProfessionID = list.findIndex((x: any) => x == 5) >= 0 ? searchParamsCache.parentProfessionID : "";
|
|
|
+
|
|
|
+ popoverCheckboxIsOpen.value = false;
|
|
|
+ reload();
|
|
|
+ }
|
|
|
+
|
|
|
+ const onRestRecommendPostWhere = () => {
|
|
|
+ recommendPostWhereList.value.map((x: any) => x.check = false);
|
|
|
+ recommendPostWhereList.value[0].check = true;
|
|
|
+ }
|
|
|
+
|
|
|
const onRecommend = (item: any) => {
|
|
|
addRecommendList.value.push({
|
|
|
recommendMgtID: item.recommendMgtID,
|
|
@@ -155,8 +226,25 @@ export default defineComponent({
|
|
|
searchParams.pageIndex = 1;
|
|
|
loadData();
|
|
|
}
|
|
|
+
|
|
|
+ const reloadSearchParams = () => {
|
|
|
+ searchParams.jobHuntID = route.query.jobHuntID as any;
|
|
|
+ searchParams.jobUserName = route.query.jobUserName as any;
|
|
|
+ searchParams.professionID = route.query.professionID as any;
|
|
|
+ searchParams.professionName = route.query.professionName as any;
|
|
|
+ searchParams.type = route.query.type as any;
|
|
|
+ searchParamsCache.professionID = route.query.professionID as any;
|
|
|
+ searchParamsCache.parentProfessionID = route.query.parentProfessionID as any;
|
|
|
+ searchParamsCache.cultureRank = route.query.cultureRank as any;
|
|
|
+ searchParamsCache.workYear = route.query.workYear as any;
|
|
|
+ searchParamsCache.workYear = route.query.workYear as any;
|
|
|
+ searchParamsCache.minSalary = route.query.minSalary as any;
|
|
|
+ searchParamsCache.maxSalary = route.query.maxSalary as any;
|
|
|
+ }
|
|
|
+
|
|
|
onIonViewDidEnter(() => {
|
|
|
reload();
|
|
|
+ reloadSearchParams();
|
|
|
});
|
|
|
|
|
|
return {
|
|
@@ -164,56 +252,34 @@ export default defineComponent({
|
|
|
addCircleOutline,
|
|
|
router,
|
|
|
route,
|
|
|
- colors,
|
|
|
loading,
|
|
|
pagination,
|
|
|
searchParams,
|
|
|
+ searchParamsCache,
|
|
|
dataList,
|
|
|
+ recommendPostWhereList,
|
|
|
+ popoverCheckboxIsOpen,
|
|
|
onScroll,
|
|
|
loadData,
|
|
|
reload,
|
|
|
onBack,
|
|
|
onRecommend,
|
|
|
onBatchRecommend,
|
|
|
+ getRecommendTypeList,
|
|
|
+ onPopoverConfirm,
|
|
|
+ onRestRecommendPostWhere,
|
|
|
}
|
|
|
+ }, created() {
|
|
|
+ this.getRecommendTypeList()
|
|
|
}
|
|
|
});
|
|
|
</script>
|
|
|
|
|
|
<style lang="less">
|
|
|
-.custom {
|
|
|
- --placeholder-color: gray;
|
|
|
- //--placeholder-font-style: italic;
|
|
|
- --placeholder-opacity: 1;
|
|
|
-}
|
|
|
-
|
|
|
-.company-list-page {
|
|
|
- .list-content {
|
|
|
- margin: 0px 15px !important;
|
|
|
- background-color: white !important;
|
|
|
- border-radius: 0 !important;
|
|
|
-
|
|
|
- ion-item {
|
|
|
- margin-top: 10px;
|
|
|
- font-size: 14px;
|
|
|
- border: 1px solid rgb(242, 242, 245);
|
|
|
-
|
|
|
- p {
|
|
|
- font-size: 12px;
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-.container {
|
|
|
- display: flex;
|
|
|
- justify-content: center; /* 水平居中 */
|
|
|
- align-items: center; /* 垂直居中 */
|
|
|
-}
|
|
|
|
|
|
-.footer-ios ion-toolbar:first-of-type{
|
|
|
- --border-width:0 !important;
|
|
|
- --background:#ffffff !important;
|
|
|
+.footer-ios ion-toolbar:first-of-type {
|
|
|
+ --border-width: 0 !important;
|
|
|
+ --background: #ffffff !important;
|
|
|
}
|
|
|
|
|
|
</style>
|