|
@@ -61,7 +61,7 @@
|
|
<!-- 公司信息 -->
|
|
<!-- 公司信息 -->
|
|
<EnterpriseInfo :info="{ ...info, position: { ...positionInfo } }"></EnterpriseInfo>
|
|
<EnterpriseInfo :info="{ ...info, position: { ...positionInfo } }"></EnterpriseInfo>
|
|
<!-- 相似职位 -->
|
|
<!-- 相似职位 -->
|
|
- <similarPositions class="mt-3"></similarPositions>
|
|
|
|
|
|
+ <similarPositions class="mt-3" :list="similarList"></similarPositions>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
@@ -70,9 +70,10 @@
|
|
|
|
|
|
<script setup>
|
|
<script setup>
|
|
defineOptions({ name: 'position-details' })
|
|
defineOptions({ name: 'position-details' })
|
|
-import { ref } from 'vue'
|
|
|
|
|
|
+import { ref, reactive } from 'vue'
|
|
import { useRouter } from 'vue-router'
|
|
import { useRouter } from 'vue-router'
|
|
-import { getPositionDetails } from '@/api/position'
|
|
|
|
|
|
+import { getDict } from '@/hooks/web/useDictionaries'
|
|
|
|
+import { getPositionDetails, getSimilarPosition } from '@/api/position'
|
|
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'
|
|
|
|
|
|
@@ -89,11 +90,47 @@ const getPositionDetail = async () => {
|
|
getPositionDetail()
|
|
getPositionDetail()
|
|
|
|
|
|
const desc = [
|
|
const desc = [
|
|
- { mdi: 'mdi-map-marker-outline', value: 'areaName', label: '广州' },
|
|
|
|
- { mdi: 'mdi-school-outline', value: 'eduName', label: '本科' },
|
|
|
|
- { mdi: 'mdi-clock-time-ten-outline', value: 'expName', label: '1-3年' }
|
|
|
|
|
|
+ { mdi: 'mdi-map-marker-outline', value: 'areaName' },
|
|
|
|
+ { mdi: 'mdi-school-outline', value: 'eduName' },
|
|
|
|
+ { mdi: 'mdi-clock-time-ten-outline', value: 'expName' }
|
|
]
|
|
]
|
|
|
|
|
|
|
|
+// 相似职位
|
|
|
|
+const similarList = ref([])
|
|
|
|
+const getSimilarPositionList = async () => {
|
|
|
|
+ if (!Object.keys(positionInfo).length) return
|
|
|
|
+ const { list } = await getSimilarPosition({ pageNo: 1, pageSize: 4, positionId: positionInfo.positionId, expType: positionInfo.expType })
|
|
|
|
+ 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
|
|
|
|
+ })
|
|
|
|
+ })
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+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()
|
|
</script>
|
|
</script>
|
|
|
|
|
|
<style lang="scss" scoped>
|
|
<style lang="scss" scoped>
|