Преглед изворни кода

求职端招聘会接口参数调整,企业职位发布去除扩展信息

Xiao_123 пре 1 месец
родитељ
комит
743b924549

+ 1 - 1
src/api/recruit/enterprise/jobFair.js

@@ -11,7 +11,7 @@ export const getCheckJobFairPermission = async (id) => {
 export const getJobFairList = async (params) => {
   return await request.get({
     url: '/app-api/menduner/system/recruit/job-fair/list',
-    params
+    params // status: 0 进行中 1 已结束
   })
 }
 

+ 0 - 7
src/api/recruit/personal/jobFair.js

@@ -16,13 +16,6 @@ export const getJobFair = async (id) => {
 	})
 }
 
-// 招聘会列表
-export const getJobFairList = async () => {
-	return await request.get({
-		url: '/app-api/menduner/system/job-fair/list'
-	})
-}
-
 // 根据企业id查询招聘会职位列表
 export const getJobFairEntJobPage = async (params) => {
 	return await request.get({

+ 109 - 104
src/views/recruit/enterprise/jobFair/editJob/index.vue

@@ -1,6 +1,6 @@
 <template>
-  <add :after-add="afterAdd" :valid="validate" :isFair="true">
-    <template #timeline>
+  <add :after-add="afterAdd" :isFair="true">
+    <!-- <template #timeline>
       <v-timeline-item
           dot-color="light-blue darken-1"
           icon="mdi-numeric-3"
@@ -10,19 +10,23 @@
           <CtForm ref="formPageRef" class="mt-3" :items="items" style="width: 650px;"></CtForm>
         </div>
       </v-timeline-item>
-    </template>
+    </template> -->
   </add>
 </template>
 
 <script setup>
 defineOptions({ name: 'editJob' })
-import { ref } from 'vue'
+// import { ref } from 'vue'
 import { useRoute, useRouter } from 'vue-router'
-import CtForm from '@/components/CtForm'
+// import CtForm from '@/components/CtForm'
 import Add from '@/views/recruit/enterprise/positionManagement/components/add.vue'
 import { useI18n } from '@/hooks/web/useI18n'
-import { schoolMajorByName, schoolMajorById } from '@/api/recruit/personal/resume'
-import { saveJobAdvertisedExtend, joinJobFairPosition, getJobAdvertisedExtend } from '@/api/recruit/enterprise/jobFair'
+// import { schoolMajorByName, schoolMajorById } from '@/api/recruit/personal/resume'
+import { 
+  // saveJobAdvertisedExtend, 
+  joinJobFairPosition, 
+  // getJobAdvertisedExtend 
+} from '@/api/recruit/enterprise/jobFair'
 import Snackbar from '@/plugins/snackbar'
 
 
@@ -30,112 +34,113 @@ const { t } = useI18n()
 const route = useRoute()
 const router = useRouter()
 
-const formPageRef = ref(null)
+// const formPageRef = ref(null)
 
-const items = ref({
-  options: [
-    {
-      type: 'text',
-      key: 'dept',
-      value: null,
-      col: 6,
-      label: '招聘部门 ',
-    },
-    {
-      type: 'autocomplete',
-      key: 'majorId',
-      search: getMajorList,
-      value: null,
-      label: '专业要求 ',
-      itemText: 'nameCn',
-      col: 6,
-      itemValue: 'id',
-      flexStyle: 'ml-3',
-      noDataText: '请输入检索专业',
-      items: []
-    },
-    {
-      type: 'autocomplete',
-      key: 'frequency-dateType',
-      value: null,
-      label: '工作频率 ',
-      col: 6,
-      items: [
-        { label: '每周', value: 'week' },
-        { label: '每月', value: 'month' },
-        { label: '每年', value: 'year' },
-      ]
-    },
-    {
-      type: 'number',
-      key: 'frequency-day',
-      value: null,
-      flexStyle: 'ml-3',
-      col: 6,
-      label: '出勤天数 ',
-    }
-  ]
-})
+// const items = ref({
+//   options: [
 
-if (route.query.id) {
-  // 编辑
-  initPosition(route.query.id)
-}
+//     {
+//       type: 'text',
+//       key: 'dept',
+//       value: null,
+//       col: 6,
+//       label: '招聘部门 ',
+//     },
+//     {
+//       type: 'autocomplete',
+//       key: 'majorId',
+//       search: getMajorList,
+//       value: null,
+//       label: '专业要求 ',
+//       itemText: 'nameCn',
+//       col: 6,
+//       itemValue: 'id',
+//       flexStyle: 'ml-3',
+//       noDataText: '请输入检索专业',
+//       items: []
+//     },
+//     {
+//       type: 'autocomplete',
+//       key: 'frequency-dateType',
+//       value: null,
+//       label: '工作频率 ',
+//       col: 6,
+//       items: [
+//         { label: '每周', value: 'week' },
+//         { label: '每月', value: 'month' },
+//         { label: '每年', value: 'year' },
+//       ]
+//     },
+//     {
+//       type: 'number',
+//       key: 'frequency-day',
+//       value: null,
+//       flexStyle: 'ml-3',
+//       col: 6,
+//       label: '出勤天数 ',
+//     }
+//   ]
+// })
 
-async function initPosition (jobId) {
-  const res = await getJobAdvertisedExtend(jobId)
-  if (!res) return
-  items.value.options.forEach(e => {
-    if (e.key.includes('frequency') && res.frequency) {
-      const keys = e.key.split('-')
-      e.value = res[keys[0]][keys[1]]
-      return
-    }
-    if (e.key === 'majorId') {
-      getMajorById(res.majorId)
-    }
-    e.value = res[e.key]
-  })
-}
+// if (route.query.id) {
+//   // 编辑
+//   initPosition(route.query.id)
+// }
 
-async function getMajorList (name) {
-  if (!name) {
-    return
-  }
-  const res = await schoolMajorByName({ name })
-  items.value.options.find(e => e.key === 'majorId').items = res
-}
+// async function initPosition (jobId) {
+//   const res = await getJobAdvertisedExtend(jobId)
+//   if (!res) return
+//   items.value.options.forEach(e => {
+//     if (e.key.includes('frequency') && res.frequency) {
+//       const keys = e.key.split('-')
+//       e.value = res[keys[0]][keys[1]]
+//       return
+//     }
+//     if (e.key === 'majorId') {
+//       getMajorById(res.majorId)
+//     }
+//     e.value = res[e.key]
+//   })
+// }
 
-async function getMajorById (id) {
-  if (!id) return
-  const res = await schoolMajorById({ id })
-  items.value.options.find(e => e.key === 'majorId').items = [res]
-}
+// async function getMajorList (name) {
+//   if (!name) {
+//     return
+//   }
+//   const res = await schoolMajorByName({ name })
+//   items.value.options.find(e => e.key === 'majorId').items = res
+// }
 
-const validate = async () => {
-  const res = await formPageRef.value.formRef.validate()
-  return res
-}
+// async function getMajorById (id) {
+//   if (!id) return
+//   const res = await schoolMajorById({ id })
+//   items.value.options.find(e => e.key === 'majorId').items = [res]
+// }
+
+// const validate = async () => {
+//   const res = await formPageRef.value.formRef.validate()
+//   return res
+// }
 const afterAdd = async (jobId) => {
   try {
-    const query = items.value.options.reduce((r, v) => {
-      if (v.key.includes('frequency')) {
-        const keys = v.key.split('-')
-        if (!r[keys[0]]) {
-          r[keys[0]] = {}
-        }
-        r[keys[0]][keys[1]] = v.type === 'number' ? +v.value : v.value
-        return r
-      }
-      if (v.key === 'majorId') {
-        r.major = v.items.find(e => e.id === v.value)?.nameCn || ''
-      }
-      r[v.key] = v.type === 'number' ? +v.value : v.value
-      return r
-    }, { jobId })
+    // const query = items.value.options.reduce((r, v) => {
+    //   if (v.key.includes('frequency')) {
+    //     const keys = v.key.split('-')
+    //     if (!r[keys[0]]) {
+    //       r[keys[0]] = {}
+    //     }
+    //     r[keys[0]][keys[1]] = v.type === 'number' ? +v.value : v.value
+    //     return r
+    //   }
+    //   if (v.key === 'majorId') {
+    //     r.major = v.items.find(e => e.id === v.value)?.nameCn || ''
+    //   }
+    //   r[v.key] = v.type === 'number' ? +v.value : v.value
+    //   return r
+    // }, { jobId })
 
-    console.log(query, 'query')
-    await saveJobAdvertisedExtend(query)
+    // console.log(query, 'query')
+    // await saveJobAdvertisedExtend(query)
     await joinJobFairPosition({
       jobFairId: route.params.id,
       jobId

+ 4 - 2
src/views/recruit/enterprise/jobFair/index.vue

@@ -6,13 +6,15 @@
         <div class="px-5 py-3">
           <div class="color-666">
             活动状态:
-            <span :style="{'color': k.status === '0' ? 'var(--v-primary-base)' : 'var(--v-error-base)'}">
+            <span class="font-weight-bold" :style="{'color': k.status === '0' ? 'var(--v-primary-base)' : 'var(--v-error-base)'}">
               {{ k.status === '0' ? '进行中' : '已结束' }}
             </span>
           </div>
           <div class="color-666">活动时间:{{ timesTampChange(k.startTime, 'Y-M-D') }}至{{ timesTampChange(k.endTime, 'Y-M-D') }}</div>
           <div class="text-end">
-            <v-btn color="primary" variant="outlined" @click.stop="handleBlockEnterprise(k)">立即加入</v-btn>
+            <v-btn color="primary" variant="outlined" @click.stop="handleBlockEnterprise(k)">
+              {{ k.status === '1' ? '查看详情' : '立即加入'}}
+            </v-btn>
           </div>
         </div>
       </v-card>

+ 109 - 109
src/views/recruit/enterprise/positionManagement/components/add.vue

@@ -11,15 +11,15 @@
           <div>
             <h2 class="mt-n1 headline font-weight-regular">{{ val.title }}</h2>
             <div class="mb-4 color-666 font-size-13">{{ val.desc }}</div>
-            <component :is="val.path" :ref="val.ref" :isFair="props.isFair" :itemData="itemData" @changeType="handleChangeType"></component>
+            <component :is="val.path" :ref="val.ref" :isFair="props.isFair" :itemData="itemData"></component>
           </div>
         </v-timeline-item>
-        <v-timeline-item v-if="showExtend" dot-color="light-blue darken-1" icon="mdi-numeric-3">
+        <!-- <v-timeline-item v-if="showExtend" dot-color="light-blue darken-1" icon="mdi-numeric-3">
           <div>
             <h2 class="mt-n1 headline font-weight-regular">其他</h2>
             <CtForm ref="formPageRef" class="mt-3" :items="items" style="width: 650px;"></CtForm>
           </div>
-        </v-timeline-item>
+        </v-timeline-item> -->
         <slot name="timeline"></slot>
       </v-timeline>
       <div class="text-center mb">
@@ -55,13 +55,13 @@ import Snackbar from '@/plugins/snackbar'
 import { useI18n } from '@/hooks/web/useI18n'
 import { useUserStore } from '@/store/user'
 import { createTradeOrder } from '@/api/position'
-import { saveJobAdvertisedExtend, getJobAdvertisedExtend } from '@/api/recruit/enterprise/jobFair'
-import { schoolMajorByName, schoolMajorById } from '@/api/recruit/personal/resume'
+// import { saveJobAdvertisedExtend, getJobAdvertisedExtend } from '@/api/recruit/enterprise/jobFair'
+// import { schoolMajorByName, schoolMajorById } from '@/api/recruit/personal/resume'
 
 // 添加只为之后是否需要额外操作
 const props = defineProps({
   afterAdd: Function,
-  valid: Function,
+  // valid: Function,
   isFair: Boolean
 })
 
@@ -95,115 +95,115 @@ const list = [
   }
 ]
 
-const formPageRef = ref()
-const items = ref({
-  options: [
-    {
-      type: 'text',
-      key: 'dept',
-      value: null,
-      col: 6,
-      label: '招聘部门 '
-    },
-    {
-      type: 'autocomplete',
-      key: 'majorId',
-      search: getMajorList,
-      value: null,
-      label: '专业要求 ',
-      itemText: 'nameCn',
-      col: 6,
-      itemValue: 'id',
-      flexStyle: 'ml-3',
-      noDataText: '请输入检索专业',
-      items: []
-    },
-    {
-      type: 'autocomplete',
-      key: 'frequency-dateType',
-      value: null,
-      label: '工作频率 ',
-      col: 6,
-      items: [
-        { label: '每周', value: 'week' },
-        { label: '每月', value: 'month' },
-        { label: '每年', value: 'year' }
-      ]
-    },
-    {
-      type: 'number',
-      key: 'frequency-day',
-      value: null,
-      flexStyle: 'ml-3',
-      col: 6,
-      label: '出勤天数 '
-    }
-  ]
-})
+// const formPageRef = ref()
+// const items = ref({
+//   options: [
+//     {
+//       type: 'text',
+//       key: 'dept',
+//       value: null,
+//       col: 6,
+//       label: '招聘部门 '
+//     },
+//     {
+//       type: 'autocomplete',
+//       key: 'majorId',
+//       search: getMajorList,
+//       value: null,
+//       label: '专业要求 ',
+//       itemText: 'nameCn',
+//       col: 6,
+//       itemValue: 'id',
+//       flexStyle: 'ml-3',
+//       noDataText: '请输入检索专业',
+//       items: []
+//     },
+//     {
+//       type: 'autocomplete',
+//       key: 'frequency-dateType',
+//       value: null,
+//       label: '工作频率 ',
+//       col: 6,
+//       items: [
+//         { label: '每周', value: 'week' },
+//         { label: '每月', value: 'month' },
+//         { label: '每年', value: 'year' }
+//       ]
+//     },
+//     {
+//       type: 'number',
+//       key: 'frequency-day',
+//       value: null,
+//       flexStyle: 'ml-3',
+//       col: 6,
+//       label: '出勤天数 '
+//     }
+//   ]
+// })
 
 // 是否展示扩展信息
-const showExtend = ref(false)
-const handleChangeType = (show) => {
-  console.log(show, '招聘类型是否为实习')
-  showExtend.value = show
-  if (!show) {
-    items.value.options.forEach(e => e.value = null)
-  }
-}
+// const showExtend = ref(false)
+// const handleChangeType = (show) => {
+//   console.log(show, '招聘类型是否为实习')
+//   showExtend.value = show
+//   if (!show) {
+//     items.value.options.forEach(e => e.value = null)
+//   }
+// }
 // console.log(route)
 
-async function initPosition (jobId) {
-  const res = await getJobAdvertisedExtend(jobId)
-  console.log(res, '获取扩展信息')
-  if (!res) return
-  items.value.options.forEach(e => {
-    if (e.key.includes('frequency') && res.frequency) {
-      const keys = e.key.split('-')
-      e.value = res[keys[0]][keys[1]]
-      return
-    }
-    if (e.key === 'majorId') {
-      getMajorById(res.majorId)
-    }
-    e.value = res[e.key]
-  })
-  showExtend.value = true
-}
+// async function initPosition (jobId) {
+//   const res = await getJobAdvertisedExtend(jobId)
+//   console.log(res, '获取扩展信息')
+//   if (!res) return
+//   items.value.options.forEach(e => {
+//     if (e.key.includes('frequency') && res.frequency) {
+//       const keys = e.key.split('-')
+//       e.value = res[keys[0]][keys[1]]
+//       return
+//     }
+//     if (e.key === 'majorId') {
+//       getMajorById(res.majorId)
+//     }
+//     e.value = res[e.key]
+//   })
+//   showExtend.value = true
+// }
 
-async function getMajorList (name) {
-  if (!name) {
-    return
-  }
-  const res = await schoolMajorByName({ name })
-  items.value.options.find(e => e.key === 'majorId').items = res
-}
+// async function getMajorList (name) {
+//   if (!name) {
+//     return
+//   }
+//   const res = await schoolMajorByName({ name })
+//   items.value.options.find(e => e.key === 'majorId').items = res
+// }
 
-async function getMajorById (id) {
-  if (!id) return
-  const res = await schoolMajorById({ id })
-  items.value.options.find(e => e.key === 'majorId').items = [res]
-}
+// async function getMajorById (id) {
+//   if (!id) return
+//   const res = await schoolMajorById({ id })
+//   items.value.options.find(e => e.key === 'majorId').items = [res]
+// }
 
 // 保存扩展信息
-const handleSaveExtend = async (jobId) => {
-  const query = items.value.options.reduce((r, v) => {
-    if (v.key.includes('frequency')) {
-      const keys = v.key.split('-')
-      if (!r[keys[0]]) {
-        r[keys[0]] = {}
-      }
-      r[keys[0]][keys[1]] = v.type === 'number' ? +v.value : v.value
-      return r
-    }
-    if (v.key === 'majorId') {
-      r.major = v.items.find(e => e.id === v.value)?.nameCn || ''
-    }
-    r[v.key] = v.type === 'number' ? +v.value : v.value
-    return r
-  }, { jobId })
-  console.log(query, 'extendInfo')
-  await saveJobAdvertisedExtend(query)
-}
+// const handleSaveExtend = async (jobId) => {
+//   const query = items.value.options.reduce((r, v) => {
+//     if (v.key.includes('frequency')) {
+//       const keys = v.key.split('-')
+//       if (!r[keys[0]]) {
+//         r[keys[0]] = {}
+//       }
+//       r[keys[0]][keys[1]] = v.type === 'number' ? +v.value : v.value
+//       return r
+//     }
+//     if (v.key === 'majorId') {
+//       r.major = v.items.find(e => e.id === v.value)?.nameCn || ''
+//     }
+//     r[v.key] = v.type === 'number' ? +v.value : v.value
+//     return r
+//   }, { jobId })
+//   console.log(query, 'extendInfo')
+//   await saveJobAdvertisedExtend(query)
+// }
 
 let submitParams = {}
 // 发布
@@ -237,7 +237,7 @@ const saveEmit = async (retry) => {
   loading.value = true
   try {
     const res = await saveJobAdvertised({ ...submitParams, fair: props.isFair ? true : false }) // fair:是否为招聘会职位编辑-必填
-    if (showExtend.value) await handleSaveExtend(res) // 保存扩展信息
+    // if (props.isFair) await handleSaveExtend(res) // 保存扩展信息
 
     // status:99为待支付职位,弹窗支付
     if (submitParams?.status && submitParams?.status === '99') {
@@ -294,7 +294,7 @@ const getPositionDetail = async (id) => {
   show.value = true
 
   // 招聘类型为实习则获取扩展信息
-  if (data.type === '3') initPosition(id)
+  // if (data.type === '3') initPosition(id)
 }
 
 // 有id为编辑

+ 7 - 7
src/views/recruit/enterprise/positionManagement/components/jobRequirements.vue

@@ -73,7 +73,7 @@ import { getDict } from '@/hooks/web/useDictionaries'
 import { getTagTreeDataApi } from '@/api/enterprise'
 import { getEnterprisePubJobTypePermission } from '@/api/recruit/enterprise/position'
 
-const emits = defineEmits(['changeType'])
+// const emits = defineEmits(['changeType'])
 const props = defineProps({
   itemData: Object,
   isFair: {
@@ -117,11 +117,11 @@ const rules = {
   payUnit: [v => !!v || '请选择计薪时段'],
 }
 
-const handleChangeType = (val) => {
-  const type = items.value.options.find(e => e.key === 'type')
-  const obj = type.items.find(e => Number(e.value) === Number(val))
-  emits('changeType', obj[type.itemText] === '实习')
-}
+// const handleChangeType = (val) => {
+//   const type = items.value.options.find(e => e.key === 'type')
+//   const obj = type.items.find(e => Number(e.value) === Number(val))
+//   emits('changeType', obj[type.itemText] === '实习')
+// }
 
 const formPageRef = ref()
 let query = reactive({})
@@ -137,7 +137,7 @@ const items = ref({
       col: 4,
       rules: [v => !!v || '招聘类型'],
       items: [],
-      change: handleChangeType
+      // change: handleChangeType
     },
     {
       type: 'autocomplete',

+ 2 - 1
src/views/recruit/personal/jobFair/details/entJobCard.vue

@@ -54,7 +54,8 @@ const query = reactive({
   pageSize: 20,
 	jobFairId: route.params.id,
   enterpriseId: route.query.enterpriseId,
-  keyword: ''
+  keyword: '',
+  status: '0' // 查询招聘中的职位
 })
 
 const logoUrl = ref('')

+ 3 - 1
src/views/recruit/personal/jobFair/details/enterprises.vue

@@ -152,9 +152,11 @@ const getList = async () => {
     const value = jobFair.value.tag[tab.value].content.map(e => e.value)
     query[key] = value
   }
+  if (jobFair.value?.category === '1') query.status = '0' // 查询招聘中的职位
 
+  const api = jobFair.value?.category === '0' ? getJobFairEnterprisePage : getJobFairEntJobPage
 	try {
-		const result = jobFair.value?.category === '0' ? await getJobFairEnterprisePage(query) : await getJobFairEntJobPage(query)
+		const result = await api(query)
 		const list = result?.list || []
     if (list.length) {
       if (jobFair.value?.category === '1') {

+ 22 - 4
src/views/recruit/personal/jobFair/index.vue

@@ -15,6 +15,13 @@
 			</div>
 		</div>
 		<Empty v-else class="mx-3" message="暂无进行中的招聘会,去看看其他吧~" />
+		<CtPagination
+      v-if="total > 0"
+      :total="total"
+      :page="query.pageNo"
+      :limit="query.pageSize"
+      @handleChange="handleChangePage"
+    ></CtPagination>
 	</div>
 </template>
 
@@ -22,19 +29,30 @@
 defineOptions({ name: 'jobFair' })
 import { ref } from 'vue'
 import { timesTampChange } from '@/utils/date'
-import { getJobFairList } from '@/api/recruit/personal/jobFair'
+import { getJobFairList } from '@/api/recruit/enterprise/jobFair'
 import buttons from '@/views/recruit/personal/components/buttons.vue'
-import { useRouter } from 'vue-router'; const router = useRouter()
 
+const total = ref(0)
 const list = ref([])
+const query = ref({
+  pageNo: 1,
+  pageSize: 4,
+	status: '0'
+})
 
 // 招聘会列表
 const getList = async () => {
-	const data = await getJobFairList()
-	list.value = data || []
+	const data = await getJobFairList(query.value)
+	list.value = data.list || []
+  total.value = data.total
 }
 getList()
 
+const handleChangePage = (val) => {
+  query.value.pageNo = val
+  getList()
+}
+
 const handleJoin = (val) => {
 	if (!val?.id) return
 	window.open('/recruit/personal/jobFair/enterprises/' + val.id)