浏览代码

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

Xiao_123 1 年之前
父节点
当前提交
259ecbda0a

+ 1 - 1
src/components/CtForm/index.vue

@@ -37,7 +37,7 @@
 defineOptions({ name:'components-ct-form'})
 import textUI from './../FormUI/TextInput'
 import autocompleteUI from './../FormUI/autocomplete'
-import { ref } from 'vue'
+import { ref, defineEmits } from 'vue'
 const emit = defineEmits(['change', 'inputUpdateAutocomplete'])// 定义一个或多个自定义事件
 const props = defineProps({items: Object})
 const valid = ref(false)

+ 1 - 1
src/components/FormUI/TextInput/index.vue

@@ -30,7 +30,7 @@
   </div>
 </template>
 <script setup>
-import { computed } from 'vue';
+import { computed, defineEmits } from 'vue';
 defineOptions({ name:'FormUI-v-text-field'})
 
 const props = defineProps({item: Object, modelValue: [String, Number]})

+ 1 - 1
src/components/FormUI/autocomplete/index.vue

@@ -24,7 +24,7 @@
   </div>
 </template>
 <script setup>
-import { computed } from 'vue';
+import { computed, defineEmits } from 'vue';
 defineOptions({ name:'FormUI-v-autocomplete'})
 
 const props = defineProps({item: Object, modelValue: [String, Number]})

+ 15 - 8
src/components/headSearch/index.vue

@@ -2,7 +2,7 @@
   <div class="search d-flex align-center">
     <div style="position: relative;">
       <div class="jobBox d-flex pl-5" :class="{'drawer': drawer}" @click.stop="drawer = !drawer">
-        <span>职位类型</span>
+        <span>{{ text }}</span>
         <span class="mdi mdi-chevron-down px-2" style="font-size: 18px;"></span>
       </div>
       <jobTypeCard class="jobTypeCardBox" v-if="drawer" @click.stop=""></jobTypeCard>
@@ -24,23 +24,24 @@
 <script setup>
 import { useSharedState } from '@/store/sharedState'
 import jobTypeCard from '@/components/jobTypeCard'
-
-import { ref, watch } from 'vue';
-
+import { ref, watch } from 'vue'
+// import { useRouter } from 'vue-router'
 defineOptions({ name:'common-components-headSearch'})
-
+// const router = useRouter()
+const text = ref('职位类型')
 const value = ref('')
 let drawer = ref(false)
-
 // 点击外部关闭职位下拉
 const sharedState = useSharedState()
-
 // 监听 layoutClickCount 变化
 watch(() => sharedState.layoutClickCount, () => {
-  // console.log('layoutClickCount', newValue)
   if (drawer.value) drawer.value = false
 });
 
+// const jobClick = (jobInfo) => {
+//   router.push({ path: '/recruit/position',query: jobInfo })
+// }
+
 </script>
 
 <style lang="scss" scoped>
@@ -55,6 +56,12 @@ watch(() => sharedState.layoutClickCount, () => {
     &:hover {
       color: var(--v-primary-base);
     }
+    span {
+      max-width: 150px;
+      white-space: nowrap;
+      overflow: hidden;
+      text-overflow: ellipsis;
+    }
   }
   .drawer {
     color: var(--v-primary-base);

+ 19 - 15
src/components/jobTypeCard/index.vue

@@ -60,28 +60,38 @@
 </template>
 
 <script setup>
-import { getPositionTreeClick } from '@/api/common/index'
+// import { getPositionTreeClick } from '@/api/common/index'
 import { getDict } from '@/hooks/web/useDictionaries'
-
-import { reactive, ref } from 'vue';
-
+import { reactive, ref, defineEmits } from 'vue';
+import { useRoute, useRouter } from 'vue-router'
 defineOptions({ name:'common-components-jobTypeCard'})
 
+const route = useRoute(); const router = useRouter()
+const emits = defineEmits(['handleJobClick'])// 定义一个或多个自定义事件
+
 const props = defineProps({
-  page: { // 是否分页
+  page: { // 左侧数据是否分页(首页有分页)
     type: Boolean,
     default: false
   },
 })
 const isPage = props.page
 
+// 职位点击
+const handleJobClick = async (val) => {
+  const path = '/recruit/position'
+  if (path === route.path) emits('jobClick', val)
+  else router.push({ path, query: { ...val, jumpType: 1 } })
+  // await getPositionTreeClick({ id: val.id })
+}
+
 // 翻页数据
 const pageInfo = reactive({ current: 1, size: 8 })
 let pageCount = ref(0)
 let defaultItems = ref()
 
 let items = ref()
-// 翻页数据
+// 翻页
 const getPageItems = () => {
   const startIndex = (pageInfo.current - 1) * pageInfo.size
   const endIndex = Math.min(startIndex + pageInfo.size, defaultItems.value.length)
@@ -89,8 +99,7 @@ const getPageItems = () => {
 }
 getDict('positionTreeData', null, 'positionTreeData').then(({ data }) => {
   data = data?.length && data || []
-  if (isPage) {
-    // 翻页数据
+  if (isPage) { // 有翻页
     defaultItems.value = data
     if (defaultItems.value?.length) {
       pageCount.value = Math.ceil(defaultItems.value.length / pageInfo.size)
@@ -101,12 +110,11 @@ getDict('positionTreeData', null, 'positionTreeData').then(({ data }) => {
   }
 })
 
-
-// 翻页数据
+// 翻页按钮
 const previous = () => { if (pageInfo.current > 1) pageInfo.current--; getPageItems() }
 const nextPage = () => { if (pageInfo.current < pageCount.value) pageInfo.current++; getPageItems() }
 
-// card2
+// 右侧职位信息
 const leftIndex = ref(null)
 const rightObj = reactive({ show: false, data: {} })
 
@@ -125,10 +133,6 @@ const carouselList = ref([
   { src: 'https://img0.baidu.com/it/u=3769341087,3426515789&fm=253&fmt=auto&app=138&f=JPEG?w=1180&h=472', },
 ])
 
-// 职位点击事件
-const handleJobClick = async (val) => {
-  await getPositionTreeClick({ id: val.id })
-}
 </script>
 
 <style lang="scss" scoped>

+ 3 - 3
src/views/Home/personal/components/hotJobs.vue

@@ -1,7 +1,7 @@
 <template>
   <div class="box text-center">
     <span class="mr-2">热门职位:</span>
-    <v-btn v-for="(item, index) in jobs" :key="index" size="small" class="ml-2" color="primary" variant="tonal">{{ item }}</v-btn>
+    <v-btn v-for="(item, index) in jobs" :key="index" size="small" class="ml-2" color="primary" variant="tonal">{{ item.nameCn }}</v-btn>
   </div>
 </template>
 
@@ -15,8 +15,8 @@ let jobs = ref(null)
 const getTreeData = async () => {
   const res = await getHotPositionList()
   jobs.value = res || []
-  // 暂无数据,先假数据
-  if (!res?.length) jobs.value = ['Java','PHP','C#','.NET','会计','区块链工程师','测试', '新媒体运营','人力资源专员/助理','GIS工程师']
+  // // 暂无数据,先假数据
+  // if (!res?.length) jobs.value = ['Java','PHP','C#','.NET','会计','区块链工程师','测试', '新媒体运营','人力资源专员/助理','GIS工程师']
 }
 getTreeData()
 </script>

+ 3 - 0
src/views/recruit/position/index.vue

@@ -14,5 +14,8 @@
   </div>
 </template>
 <script setup>
+import { useRoute } from 'vue-router'
 defineOptions({name: 'retrieval-position-page'})
+const route = useRoute()
+console.log(route.query)
 </script>