|
@@ -70,23 +70,24 @@
|
|
|
|
|
|
<script setup>
|
|
<script setup>
|
|
defineOptions({ name: 'position-details' })
|
|
defineOptions({ name: 'position-details' })
|
|
-import { ref, reactive } from 'vue'
|
|
|
|
|
|
+import { ref } from 'vue'
|
|
import { useRouter } from 'vue-router'
|
|
import { useRouter } from 'vue-router'
|
|
import { timesTampChange } from '@/utils/date'
|
|
import { timesTampChange } from '@/utils/date'
|
|
-import { getDict } from '@/hooks/web/useDictionaries'
|
|
|
|
import { getPositionDetails, getSimilarPosition } from '@/api/position'
|
|
import { getPositionDetails, getSimilarPosition } from '@/api/position'
|
|
|
|
+import { dealData } from '@/views/recruit/position/components/dict'
|
|
import similarPositions from '@/components/Position/similarPositions.vue'
|
|
import similarPositions from '@/components/Position/similarPositions.vue'
|
|
import EnterpriseInfo from '@/components/Enterprise/info.vue'
|
|
import EnterpriseInfo from '@/components/Enterprise/info.vue'
|
|
|
|
|
|
const router = useRouter()
|
|
const router = useRouter()
|
|
const { id } = router.currentRoute.value.params
|
|
const { id } = router.currentRoute.value.params
|
|
-const { _value: positionInfo } = JSON.parse(router.currentRoute.value.query.positionInfo)
|
|
|
|
|
|
|
|
// 职位详情
|
|
// 职位详情
|
|
const info = ref({})
|
|
const info = ref({})
|
|
|
|
+const positionInfo = ref({})
|
|
const getPositionDetail = async () => {
|
|
const getPositionDetail = async () => {
|
|
const data = await getPositionDetails({ id })
|
|
const data = await getPositionDetails({ id })
|
|
info.value = data
|
|
info.value = data
|
|
|
|
+ positionInfo.value = { ...dealData(positionInfo.value, info.value), ...info.value }
|
|
}
|
|
}
|
|
getPositionDetail()
|
|
getPositionDetail()
|
|
|
|
|
|
@@ -100,38 +101,12 @@ const desc = [
|
|
const similarList = ref([])
|
|
const similarList = ref([])
|
|
const getSimilarPositionList = async () => {
|
|
const getSimilarPositionList = async () => {
|
|
if (!Object.keys(positionInfo).length) return
|
|
if (!Object.keys(positionInfo).length) return
|
|
- const { list } = await getSimilarPosition({ pageNo: 1, pageSize: 4, positionId: positionInfo.positionId, expType: positionInfo.expType })
|
|
|
|
|
|
+ const { list } = await getSimilarPosition({ pageNo: 1, pageSize: 4, positionId: positionInfo.value.positionId, expType: positionInfo.value.expType })
|
|
const items = list.splice(0, 4)
|
|
const items = list.splice(0, 4)
|
|
- dictList.forEach(item => {
|
|
|
|
- similarList.value = items.map(e => {
|
|
|
|
- const valueKey = item.nameKey ? item.nameKey : 'label'
|
|
|
|
- const idKey = item.valueKey ? item.valueKey : 'value'
|
|
|
|
- e[item.label] = dictObj[item.value].find(k => Number(k[idKey]) === Number(e[item.key]))[valueKey] || ''
|
|
|
|
- return e
|
|
|
|
- })
|
|
|
|
- })
|
|
|
|
|
|
+ similarList.value = dealData(similarList.value, items)
|
|
}
|
|
}
|
|
|
|
|
|
-const dictObj = reactive({
|
|
|
|
- payUnit: [],
|
|
|
|
- area: []
|
|
|
|
-})
|
|
|
|
-const dictList = [
|
|
|
|
- { type: 'menduner_pay_unit', value: 'payUnit', key: 'payUnit', label: 'payName' },
|
|
|
|
- { type: 'menduner_area_type', value: 'area', key: 'areaId', label: 'areaName', params: {}, apiType: 'areaList', nameKey: 'name', valueKey: 'id' }
|
|
|
|
-]
|
|
|
|
-// 字典
|
|
|
|
-const getDictList = async () => {
|
|
|
|
- dictList.forEach(async (val) => {
|
|
|
|
- const { data } = await getDict(val.type, val.params, val.apiType)
|
|
|
|
- dictObj[val.value] = data
|
|
|
|
- })
|
|
|
|
-}
|
|
|
|
-const getData = async () => {
|
|
|
|
- await getDictList()
|
|
|
|
- getSimilarPositionList()
|
|
|
|
-}
|
|
|
|
-getData()
|
|
|
|
|
|
+getSimilarPositionList()
|
|
</script>
|
|
</script>
|
|
|
|
|
|
<style lang="scss" scoped>
|
|
<style lang="scss" scoped>
|