فهرست منبع

Merge branch 'dev' of https://git.citupro.com/zhengnaiwen_citu/menduner into dev

lifanagju_citu 11 ماه پیش
والد
کامیت
8887d7ee5f

+ 4 - 4
src/components/Empty/index.vue

@@ -1,6 +1,6 @@
 <template>
-  <div class="d-flex align-center flex-column">
-    <v-img :width="width" :height="height" src="https://minio.citupro.com/dev/menduner/nodata.png"></v-img>
+  <div class="d-flex align-center flex-column white-bgc py-5 elevation-1" style="border-radius: 10px;">
+    <v-img :width="width" :height="height" cover src="https://minio.citupro.com/dev/menduner/nodata.png"></v-img>
     <div class="message">{{ message }}</div>
   </div>
 </template>
@@ -10,11 +10,11 @@ defineOptions({ name: 'empty-page'})
 defineProps({
   width: {
     type: [String, Number],
-    default: 300
+    default: 400
   },
   height: {
     type: [String, Number],
-    default: 170
+    default: 250
   },
   message: {
     type: String,

+ 15 - 3
src/views/recruit/company/components/areaType.vue

@@ -15,6 +15,7 @@
 <script setup>
 defineOptions({ name: 'search-area-type'})
 import { ref, watch } from 'vue'
+import { useRoute } from 'vue-router'
 import { getHotArea } from '@/api/common'
 
 const emits = defineEmits(['handleClick', 'clear'])
@@ -38,6 +39,9 @@ watch(
   }
 )
 
+const route = useRoute()
+const routeQuery = route.query
+
 const items = ref([])
 const getAreaList = async () => {
   const data = await getHotArea()
@@ -45,15 +49,23 @@ const getAreaList = async () => {
     e.active = false
     return e
   })
-  items.value = [{ id: -1, name: '全国', active: true }, ...list, { id: 'all', name: '更多城市' }]
+  items.value = [{ id: -1, name: '全国', active: true }, ...list]
+  // 刷新回显
+  if (routeQuery.areaIds) {
+    const obj = items.value.find(e => e.id === routeQuery.areaIds)
+    items.value.map(e => e.active = false)
+    if (obj) {
+      obj.active = true
+      emits('handleClick', [obj.id], 'areaIds')
+    }
+  }
 }
 getAreaList()
 
 const handleItemClick = (k) => {
   items.value.map(e => e.active = false)
   k.active = true
-  if (k.id === 'all') return
-  emits('handleClick', [Number(k.id)], 'areaIds')
+  emits('handleClick', [k.id], 'areaIds')
 }
 </script>
 

+ 14 - 0
src/views/recruit/company/components/industryType.vue

@@ -15,7 +15,9 @@
 <script setup>
 defineOptions({ name: 'search-industry-type'})
 import { ref, watch } from 'vue'
+import { useRoute } from 'vue-router'
 import { getIndustryTreeData } from '@/api/common/index'
+
 const emits = defineEmits(['handleClick', 'clear'])
 const props = defineProps({
   isClear: {
@@ -37,6 +39,9 @@ watch(
   }
 )
 
+const route = useRoute()
+const routeQuery = route.query
+
 const items = ref([])
 const getList = async () => {
   const data = await getIndustryTreeData({ level: 1 })
@@ -45,6 +50,15 @@ const getList = async () => {
     return e
   })
   items.value = [{ id: -1, nameCn: '不限', active: true }, ...list]
+  // 刷新回显
+  if (routeQuery.industryIds) {
+    const obj = items.value.find(e => e.id === routeQuery.industryIds)
+    items.value.map(e => e.active = false)
+    if (obj) {
+      obj.active = true
+      emits('handleClick', [obj.id], 'industryIds')
+    }
+  }
 }
 getList()
 

+ 14 - 1
src/views/recruit/company/components/natureType.vue

@@ -15,6 +15,7 @@
 <script setup>
 defineOptions({ name: 'search-nature-type'})
 import { ref, watch } from 'vue'
+import { useRoute } from 'vue-router'
 import { getDict } from '@/hooks/web/useDictionaries'
 
 const emits = defineEmits(['handleClick', 'clear'])
@@ -38,6 +39,9 @@ watch(
   }
 )
 
+const route = useRoute()
+const routeQuery = route.query
+
 const items = ref([])
 getDict('menduner_enterprise_type').then(({ data }) => {
   data = data?.length && data || []
@@ -46,12 +50,21 @@ getDict('menduner_enterprise_type').then(({ data }) => {
     return e
   })
   items.value = [{ value: -1, label: '不限', active: true }, ...list]
+  // 刷新回显
+  if (routeQuery.enterpriseType) {
+    const obj = items.value.find(e => e.value === routeQuery.enterpriseType)
+    items.value.map(e => e.active = false)
+    if (obj) {
+      obj.active = true
+      emits('handleClick', obj.value, 'enterpriseType')
+    }
+  }
 })
 
 const handleItemClick = (k) => {
   items.value.map(e => e.active = false)
   k.active = true
-  emits('handleClick', Number(k.value), 'enterpriseType')
+  emits('handleClick', k.value, 'enterpriseType')
 }
 </script>
 

+ 14 - 1
src/views/recruit/company/components/scaleType.vue

@@ -15,6 +15,7 @@
 <script setup>
 defineOptions({ name: 'search-scale-type'})
 import { ref, watch } from 'vue'
+import { useRoute } from 'vue-router'
 import { getDict } from '@/hooks/web/useDictionaries'
 
 const emits = defineEmits(['handleClick', 'clear'])
@@ -38,6 +39,9 @@ watch(
   }
 )
 
+const route = useRoute()
+const routeQuery = route.query
+
 const items = ref([])
 getDict('menduner_scale').then(({ data }) => {
   data = data?.length && data || []
@@ -46,12 +50,21 @@ getDict('menduner_scale').then(({ data }) => {
     return e
   })
   items.value = [{ value: -1, label: '不限', active: true }, ...list]
+  // 刷新回显
+  if (routeQuery.scale) {
+    const obj = items.value.find(e => e.value === routeQuery.scale)
+    items.value.map(e => e.active = false)
+    if (obj) {
+      obj.active = true
+      emits('handleClick', obj.value, 'scale')
+    }
+  }
 })
 
 const handleItemClick = (k) => {
   items.value.map(e => e.active = false)
   k.active = true
-  emits('handleClick', Number(k.value), 'scale')
+  emits('handleClick', k.value, 'scale')
 }
 </script>
 

+ 27 - 8
src/views/recruit/company/index.vue

@@ -10,19 +10,23 @@
         <div class="clear" @click="handleClear">清空筛选条件</div>
       </div>
     </div>
-    <companyItem class="mt-3" :list="items"></companyItem>
-    <MPagination
-      :total="total"
-      :page="pageInfo.pageNo"
-      :limit="pageInfo.pageSize"
-      @handleChange="handleChangePage"
-    ></MPagination>
+    <div v-if="items.length">
+      <companyItem class="mt-3" :list="items"></companyItem>
+      <MPagination
+        :total="total"
+        :page="pageInfo.pageNo"
+        :limit="pageInfo.pageSize"
+        @handleChange="handleChangePage"
+      ></MPagination>
+    </div>
+    <Empty v-else class="mt-3"></Empty>
   </div>
 </template>
 
 <script setup>
 defineOptions({name: 'retrieval-company-page'})
 import { ref } from 'vue'
+import { useRoute, useRouter } from 'vue-router'
 import { getEnterpriseSearch } from '@/api/enterprise'
 import { dealDictArrayData } from '../position/components/dict'
 import headSearch from '@/components/headSearch'
@@ -33,12 +37,15 @@ import areaType from './components/areaType'
 import companyItem from './components/companyItem'
 import MPagination from '@/components/CtPagination'
 
+const route = useRoute()
+const router = useRouter()
 const clear = ref(false)
 const handleClear = () => {
   clear.value = true
   query.value = {
     ...pageInfo.value
   }
+  router.push(route.path)
 }
 
 const total = ref(0)
@@ -51,12 +58,24 @@ const query = ref({
   ...pageInfo.value
 })
 
+const dealRouteQuery = (data) => {
+  const arr = Object.keys(data).map(e => {
+    if (e !== 'pageSize' && e !== 'pageNo') {
+      return Array.isArray(data[e]) ? `${e}=${data[e].join()}` : `${e}=${data[e]}`
+    }
+  }).filter(Boolean)
+  if (!arr.length) return router.push(route.path)
+  const str = arr?.join('&')
+  if (str) router.push(`${route.path}?${str}`)
+}
+
 // 搜索
 const handleSearch = async (val, key) => {
   query.value.pageNo = 1
   // val为-1时选择的是不限或者全国, 此时选中的字段不传
-  if (val === -1) delete query.value[key]
+  if (val === -1 || val[0] === -1) delete query.value[key]
   else query.value[key] = val
+  dealRouteQuery(query.value)
   await getCompanyData()
 }
 

+ 1 - 0
src/views/resume/components/jobIntention.vue

@@ -175,6 +175,7 @@ const items = ref({
 const interestList = ref([])
 const getJobInterested = async () => {
   const data = await getResumeJobInterested()
+  if (!data.length) return
   interestList.value = data
   interestList.value = dealJobData(data)
 }