|
@@ -27,7 +27,7 @@
|
|
:style="`color: ${jobFairInfo?.backgroundColour || 'var(--v-primary-base)'}`"
|
|
:style="`color: ${jobFairInfo?.backgroundColour || 'var(--v-primary-base)'}`"
|
|
@click="handleJoin"
|
|
@click="handleJoin"
|
|
prepend-icon="mdi-check-circle-outline"
|
|
prepend-icon="mdi-check-circle-outline"
|
|
- >克隆普通职位加入招聘会</v-btn>
|
|
|
|
|
|
+ >克隆已有职位加入招聘会</v-btn>
|
|
<v-btn
|
|
<v-btn
|
|
color="#fff"
|
|
color="#fff"
|
|
v-if="jobFairInfo?.contentImg"
|
|
v-if="jobFairInfo?.contentImg"
|
|
@@ -37,7 +37,20 @@
|
|
>我的分享海报</v-btn>
|
|
>我的分享海报</v-btn>
|
|
</div>
|
|
</div>
|
|
<div v-if="jobListLoading" class="centerText color-777">加载中...</div>
|
|
<div v-if="jobListLoading" class="centerText color-777">加载中...</div>
|
|
- <JobItem v-else :items="jobList" :status="jobFairInfo?.status === '0'" @refresh="getJobList"></JobItem>
|
|
|
|
|
|
+ <div v-else>
|
|
|
|
+ <v-tabs v-model="tab" align-tabs="start" class="mb-3" color="primary" bg-color="#fff" @update:model-value="handleChangeTab">
|
|
|
|
+ <v-tab value="0">招聘中</v-tab>
|
|
|
|
+ <v-tab value="1">已关闭</v-tab>
|
|
|
|
+ </v-tabs>
|
|
|
|
+ <JobItem :items="jobList" :status="jobFairInfo?.status === '0'" :tab="tab" @refresh="getJobList"></JobItem>
|
|
|
|
+ <CtPagination
|
|
|
|
+ v-if="tab === '1' && pageTotal"
|
|
|
|
+ :total="pageTotal"
|
|
|
|
+ :page="pageInfo.pageNo"
|
|
|
|
+ :limit="pageInfo.pageSize"
|
|
|
|
+ @handleChange="changePage"
|
|
|
|
+ ></CtPagination>
|
|
|
|
+ </div>
|
|
|
|
|
|
<v-navigation-drawer v-model="showDrawer" location="right" temporary width="600">
|
|
<v-navigation-drawer v-model="showDrawer" location="right" temporary width="600">
|
|
<Loading :visible="positionLoading" :contained="true"></Loading>
|
|
<Loading :visible="positionLoading" :contained="true"></Loading>
|
|
@@ -67,20 +80,28 @@
|
|
<div>
|
|
<div>
|
|
<div class="position" style="padding: 10px 20px;">
|
|
<div class="position" style="padding: 10px 20px;">
|
|
<div class="d-flex align-center justify-space-between">
|
|
<div class="d-flex align-center justify-space-between">
|
|
- <span class="position-name" v-ellipse-tooltip>{{ formatName(val.name) }}</span>
|
|
|
|
|
|
+ <div v-ellipse-tooltip style="flex: 1;">
|
|
|
|
+ <svg-icon v-if="val.jobFairId" class="mr-1" name="jobFair" size="20"></svg-icon>
|
|
|
|
+ <span class="font-size-19 color-333">{{ formatName(val.name) }}</span>
|
|
|
|
+ </div>
|
|
|
|
+ <div v-if="val.status === '1'" class="color-error font-size-13 text-end" style="width: 60px;">已关闭</div>
|
|
</div>
|
|
</div>
|
|
- <div :class="['mt-3', 'other-info', 'ellipsis']">
|
|
|
|
|
|
+ <div class="mt-1 font-size-13 color-666 ellipsis">
|
|
<span>{{ val.areaName ? val.area?.str : '全国' }}</span>
|
|
<span>{{ val.areaName ? val.area?.str : '全国' }}</span>
|
|
<span class="lines" v-if="val.eduName"></span>
|
|
<span class="lines" v-if="val.eduName"></span>
|
|
<span>{{ val.eduName }}</span>
|
|
<span>{{ val.eduName }}</span>
|
|
<span class="lines"></span>
|
|
<span class="lines"></span>
|
|
<span>{{ val.expName }}</span>
|
|
<span>{{ val.expName }}</span>
|
|
<span class="lines"></span>
|
|
<span class="lines"></span>
|
|
- <span v-if="!val.payFrom && !val.payTo">面议</span>
|
|
|
|
- <span v-else>{{ val.payFrom ? val.payFrom + '-' : '' }}{{ val.payTo }}{{ val.payName ? '/' + val.payName : '' }}</span>
|
|
|
|
|
|
+ <span>
|
|
|
|
+ {{ !val.payFrom && !val.payTo ? '面议' : val.payFrom ? (val.payFrom + '-' + val.payTo + (val.payName ? '/' + val.payName : '')) : '' }}
|
|
|
|
+ </span>
|
|
<span class="lines" v-if="val.positionName"></span>
|
|
<span class="lines" v-if="val.positionName"></span>
|
|
<span>{{ val.positionName }}</span>
|
|
<span>{{ val.positionName }}</span>
|
|
</div>
|
|
</div>
|
|
|
|
+ <div v-if="val.jobFairName" v-ellipse-tooltip class="font-size-13 color-primary mt-1" style="max-width: 100%;">
|
|
|
|
+ 招聘会:{{ val.jobFairName }}
|
|
|
|
+ </div>
|
|
</div>
|
|
</div>
|
|
<div
|
|
<div
|
|
class="d-flex align-center"
|
|
class="d-flex align-center"
|
|
@@ -159,6 +180,7 @@ const positionLoading = ref(false)
|
|
const positionPageInfo = ref({
|
|
const positionPageInfo = ref({
|
|
pageSize: 10,
|
|
pageSize: 10,
|
|
pageNo: 1,
|
|
pageNo: 1,
|
|
|
|
+ hire: false
|
|
})
|
|
})
|
|
const positionSearch = ref('')
|
|
const positionSearch = ref('')
|
|
|
|
|
|
@@ -171,19 +193,48 @@ const logoUrl = ref(entBaseInfo.value.logoUrl)
|
|
const previewSrc = ref('')
|
|
const previewSrc = ref('')
|
|
const positionList = ref([])
|
|
const positionList = ref([])
|
|
|
|
|
|
|
|
+const tab = ref('0')
|
|
|
|
+
|
|
// 职位列表
|
|
// 职位列表
|
|
|
|
+const pageTotal = ref(0)
|
|
|
|
+const pageInfo = ref({
|
|
|
|
+ pageSize: 10,
|
|
|
|
+ pageNo: 1
|
|
|
|
+})
|
|
const jobListLoading = ref(true)
|
|
const jobListLoading = ref(true)
|
|
const getJobList = async (type) => {
|
|
const getJobList = async (type) => {
|
|
|
|
+ const api = tab.value === '0' ? getJobFairPosition : getJobAdvertisedList
|
|
|
|
+ const query = tab.value === '0' ? id : {
|
|
|
|
+ ...pageInfo.value,
|
|
|
|
+ status: '1',
|
|
|
|
+ jobFairId: id,
|
|
|
|
+ hire: false
|
|
|
|
+ }
|
|
try {
|
|
try {
|
|
- const data = await getJobFairPosition(id)
|
|
|
|
- if (!data || !data.length) return jobList.value = []
|
|
|
|
- jobList.value = dealDictArrayData([], data)
|
|
|
|
|
|
+ const data = await api(query)
|
|
|
|
+
|
|
|
|
+ const arr = tab.value === '0' ? data : data.list
|
|
|
|
+ if (!arr || !arr.length) return jobList.value = []
|
|
|
|
+
|
|
|
|
+ jobList.value = dealDictArrayData([], arr)
|
|
|
|
+ if (tab.value === '1') pageTotal.value = data.total
|
|
|
|
+
|
|
if (type === '刷新') Snackbar.success('刷新成功')
|
|
if (type === '刷新') Snackbar.success('刷新成功')
|
|
} finally {
|
|
} finally {
|
|
jobListLoading.value = false
|
|
jobListLoading.value = false
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+const changePage = (val) => {
|
|
|
|
+ pageInfo.value.pageNo = val
|
|
|
|
+ getJobList()
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+const handleChangeTab = () => {
|
|
|
|
+ jobList.value = []
|
|
|
|
+ getJobList()
|
|
|
|
+}
|
|
|
|
+
|
|
// 新增招聘会职位
|
|
// 新增招聘会职位
|
|
const handleAdd = async () => {
|
|
const handleAdd = async () => {
|
|
const data = await getEnterprisePubJobTypePermission()
|
|
const data = await getEnterprisePubJobTypePermission()
|
|
@@ -272,11 +323,6 @@ const handleShare = () => {
|
|
position: relative;
|
|
position: relative;
|
|
border: 1px solid #e5e6eb;
|
|
border: 1px solid #e5e6eb;
|
|
}
|
|
}
|
|
-.position-name {
|
|
|
|
- max-width: 100%;
|
|
|
|
- color: var(--color-333);
|
|
|
|
- font-size: 19px;
|
|
|
|
-}
|
|
|
|
.position {
|
|
.position {
|
|
width: 100%;
|
|
width: 100%;
|
|
position: relative;
|
|
position: relative;
|