|
@@ -23,11 +23,31 @@
|
|
|
>克隆已有职位加入招聘会</v-btn>
|
|
|
<v-btn
|
|
|
color="#fff"
|
|
|
- class="mr-3"
|
|
|
:style="`color: ${jobFairInfo?.backgroundColour || 'var(--v-primary-base)'}`"
|
|
|
prepend-icon="mdi-refresh"
|
|
|
@click="getJobList('刷新')"
|
|
|
>刷新</v-btn>
|
|
|
+ <span>
|
|
|
+ <v-btn
|
|
|
+ :loading="uploadLoading"
|
|
|
+ prepend-icon="mdi-download-box-outline"
|
|
|
+ :style="`color: ${jobFairInfo?.backgroundColour || 'var(--v-primary-base)'}`"
|
|
|
+ color="#fff"
|
|
|
+ class="mx-3"
|
|
|
+ @click="handleUploadBefore"
|
|
|
+ >
|
|
|
+ 职位批量导入
|
|
|
+ </v-btn>
|
|
|
+ <File ref="uploadFile" :custom="true" customName="multipartFile" accept=".xlsx, .xls" @success="handleUploadPosition"></File>
|
|
|
+ </span>
|
|
|
+ <!-- <v-btn
|
|
|
+ :loading="templateLoading"
|
|
|
+ prepend-icon="mdi-export-variant"
|
|
|
+ :style="`color: ${jobFairInfo?.backgroundColour || 'var(--v-primary-base)'}`"
|
|
|
+ color="#fff"
|
|
|
+ class="mr-3"
|
|
|
+ @click="handleDownloadTemplate"
|
|
|
+ >批量导入模版下载</v-btn> -->
|
|
|
<v-btn
|
|
|
color="#fff"
|
|
|
v-if="jobFairInfo?.contentImg"
|
|
@@ -160,11 +180,13 @@ import JobItem from './components/jobItem.vue'
|
|
|
import { useRouter, useRoute } from 'vue-router'
|
|
|
import { useI18n } from '@/hooks/web/useI18n'
|
|
|
import Snackbar from '@/plugins/snackbar'
|
|
|
+import Confirm from '@/plugins/confirm'
|
|
|
import { getEnterprisePubJobTypePermission } from '@/api/recruit/enterprise/position'
|
|
|
import { formatName } from '@/utils/getText'
|
|
|
+import download from '@/utils/download'
|
|
|
import { getUserAvatar } from '@/utils/avatar'
|
|
|
import JobFairEntShare from '@/views/recruit/components/jobFairEntShare'
|
|
|
-import { getJobAdvertisedList } from '@/api/position'
|
|
|
+import { getJobAdvertisedList, jobAdvertisedTemplateDownload, jobAdvertisedUpload } from '@/api/position'
|
|
|
|
|
|
const router = useRouter()
|
|
|
const route = useRoute()
|
|
@@ -306,6 +328,48 @@ const handleShare = () => {
|
|
|
positionList.value = jobList.value && jobList.value.length > 0 ? jobList.value.map(e => formatName(e.name)).slice(0, 3) : []
|
|
|
showShare.value = true
|
|
|
}
|
|
|
+
|
|
|
+// 批量上传模版导出
|
|
|
+const templateLoading = ref(false)
|
|
|
+const handleDownloadTemplate = async () => {
|
|
|
+ templateLoading.value = true
|
|
|
+ try {
|
|
|
+ const data = await jobAdvertisedTemplateDownload()
|
|
|
+ download.excel(data, '批量上传模版下载.xlsx')
|
|
|
+ } finally {
|
|
|
+ templateLoading.value = false
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+// 批量上传
|
|
|
+const uploadFile = ref(null)
|
|
|
+const handleUploadBefore = () => {
|
|
|
+ const option = {
|
|
|
+ otherBtnText: '去下载模板',
|
|
|
+ sureText: '继续上传',
|
|
|
+ }
|
|
|
+ Confirm('系统提示', '如还未下载过批量上传的模板,请先下载,并且使用模板格式上传职位', option).then((obj) => {
|
|
|
+ if (obj?.otherClick) {
|
|
|
+ Snackbar.info('开始下载!')
|
|
|
+ handleDownloadTemplate()
|
|
|
+ } else {
|
|
|
+ uploadFile.value.trigger()
|
|
|
+ }
|
|
|
+ })
|
|
|
+}
|
|
|
+
|
|
|
+const uploadLoading = ref(false)
|
|
|
+const handleUploadPosition = async (formData) => {
|
|
|
+ formData.append('fairId', route.params.id)
|
|
|
+ uploadLoading.value = true
|
|
|
+ try {
|
|
|
+ await jobAdvertisedUpload(formData)
|
|
|
+ Snackbar.success('上传成功')
|
|
|
+ getJobList()
|
|
|
+ } finally {
|
|
|
+ uploadLoading.value = false
|
|
|
+ }
|
|
|
+}
|
|
|
</script>
|
|
|
|
|
|
<style scoped lang="scss">
|