Parcourir la source

招聘会:添加批量导入职位

Xiao_123 il y a 3 semaines
Parent
commit
fece5395d4
1 fichiers modifiés avec 66 ajouts et 2 suppressions
  1. 66 2
      src/views/recruit/enterprise/jobFair/details.vue

+ 66 - 2
src/views/recruit/enterprise/jobFair/details.vue

@@ -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">