Explorar el Código

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

lifanagju_citu hace 4 meses
padre
commit
e254f219b8

+ 42 - 37
src/components/CtTable/index.vue

@@ -10,7 +10,7 @@
     <v-data-table
       ref="table"
       v-model="selected"
-      :class="`elevation-${elevation} tableColor ${noRadius ? 'noRadius' : ''}`"
+      :class="`elevation-${elevation} ${showFixedLastItem ? 'fixed-last-item' : ''}`"
       :headers="headers"
       :items="items"
       :item-key="itemKey"
@@ -115,10 +115,6 @@ const props = defineProps({
     type: [String, Number],
     default: ''
   },
-  noRadius: {
-    type: Boolean,
-    default: false
-  },
   noDataText: {
     type: String,
     default: '暂无数据'
@@ -134,6 +130,11 @@ const props = defineProps({
   selectStrategy: {
     type: String,
     default: 'single'
+  },
+  // 是否将最后一项固定在表格右侧
+  showFixedLastItem: {
+    type: Boolean,
+    default: true
   }
 })
 watch(() => props.modelValue, (val) => {
@@ -200,48 +201,52 @@ const handleSelect = (e) => {
   :deep(.v-table.v-table--hover > .v-table__wrapper > table > tbody > tr > td) {
     white-space: nowrap !important;
   }
-
   :deep {
-    .v-table__wrapper {
-      position: relative;
-      
-      &::-webkit-scrollbar:horizontal {
-        height: 8px;
-      }
-      
-      &:not(:hover)::-webkit-scrollbar:horizontal {
-        display: none;
-      }
+    table > thead > tr > th:last-child {
+      border-bottom: 1px solid #e0e0e0 !important;
     }
+  }
 
-    .v-table__wrapper:not(:hover), 
-    .v-table__wrapper::-webkit-scrollbar-thumb:horizontal {
-      background: transparent;
-    }
+  .fixed-last-item {
+    :deep {
+      .v-table__wrapper {
+        position: relative;
+        &::-webkit-scrollbar:horizontal {
+          height: 8px;
+        }
+        &:not(:hover)::-webkit-scrollbar:horizontal {
+          display: none;
+        }
+      }
 
-    table > tbody > tr > td:last-child,
-    table > thead > tr > th:last-child {
-      position: sticky !important;
-      position: -webkit-sticky !important;
-      right: 0;
-      z-index: 1;
-      background: white !important;
-      box-shadow: none;
-    }
+      .v-table__wrapper:not(:hover), 
+      .v-table__wrapper::-webkit-scrollbar-thumb:horizontal {
+        background: transparent;
+      }
 
-    .v-table__wrapper.hasScroll {
       table > tbody > tr > td:last-child,
       table > thead > tr > th:last-child {
-        border-left: 1px solid #e0e0e0 !important;
-        // box-shadow: inset 10px 0 10px -10px rgba(0, 0, 0, .35) !important;
+        position: sticky !important;
+        position: -webkit-sticky !important;
+        right: 0;
+        z-index: 1;
+        background: white !important;
+        box-shadow: none;
       }
 
-      table > thead > tr > th:last-child {
-        z-index: 10 !important;
-        // box-shadow: inset 10px 0 10px -10px rgba(0, 0, 0, .35) !important;
-        // border-bottom: 1px solid #e0e0e0 !important;
+      .v-table__wrapper.hasScroll {
+        table > tbody > tr > td:last-child,
+        table > thead > tr > th:last-child {
+          border-left: 1px solid #e0e0e0 !important;
+          // box-shadow: inset 10px 0 10px -10px rgba(0, 0, 0, .35) !important;
+        }
+
+        table > thead > tr > th:last-child {
+          z-index: 10 !important;
+          // box-shadow: inset 10px 0 10px -10px rgba(0, 0, 0, .35) !important;
+          border-bottom: 1px solid #e0e0e0 !important;
+        }
       }
     }
   }
-
 </style>

+ 3 - 2
src/components/Enterprise/hotPromoted.vue

@@ -103,8 +103,9 @@ const handleClickPosition = (k) => {
 
 // 查看更多职位
 const handleMoreEnterprise = (item) => {
-  if (!item.enterprise.id) return
-  window.open(`/recruit/personal/company/details/${item.enterprise.id}?key=recruitmentPositions`)
+  // if (!item.enterprise.id) return
+  // window.open(`/recruit/personal/company/details/${item.enterprise.id}?key=recruitmentPositions`)
+  window.open(`/recruit/personal/position?content=${item.enterprise.anotherName || item.enterprise.name}`)
 }
 </script>
 

+ 1 - 1
src/components/PositionLongStrip/item.vue

@@ -24,7 +24,7 @@
               <span v-for="(j, i) in desc" :key="i">
                 <v-chip
                   v-if="item.job[j.value] || j.value === 'areaName'"
-                  size="x-small"
+                  size="small"
                   label
                   class="mr-1"
                   color="var(--color-666)"

+ 2 - 0
src/components/headSearch/index.vue

@@ -31,8 +31,10 @@
         variant="plain"
         density="compact"
         :hide-details="true"
+        clearable
         class="ml-3 px-2"
         style="height: 100%; line-height: 100%;"
+        @click:clear="handleSearch"
         @keyup.enter="handleSearch"
       ></v-text-field>
       <!-- <div class="searchBtn" @click="handleSearch">搜索</div> -->

+ 2 - 1
src/hooks/web/useIM.js

@@ -156,7 +156,8 @@ async function getKey () {
   const userStore = useUserStore()
 
   const keyQuery = {
-    userId: userStore.accountInfo.userId
+    // userId: userStore.accountInfo.userId
+    userId: JSON.parse(localStorage.getItem('accountInfo')).userId
   }
   if (isEnterprise()) {
     Object.assign(keyQuery, { enterpriseId: userStore.entBaseInfo.enterpriseId })

+ 18 - 9
src/layout/personal/navBar.vue

@@ -27,7 +27,7 @@
               <template v-else>
                 <span 
                   class="cursor-pointer menuList-first-title"
-                  :class="{'active-route' : route.path === val.path || route.path.includes(val.path)}" 
+                  :class="{'active-route': menuActive(val)}"
                   @click.stop="handleClick(val, true)">
                   {{ val.title }}
                 </span>
@@ -44,18 +44,17 @@
           <!-- 头像用户名 -->
           <div class="d-flex align-center color-333" v-if="getToken()">
             <span class="cursor-pointer mr-5 commonHover" @click="handleSwitch">我要招聘</span>
-            <span class="cursor-pointer commonHover" :class="{'active-route': routeActive === 6}" @click="router.push({ path: paths[6] })">
-              <span class="mr-3">
+            <span class="cursor-pointer commonHover" @click="router.push({ path: paths[6] })">
+              <span>
                 现金:{{ userAccount?.balance && userAccount?.balance > 0 ? (userAccount?.balance / 100.0).toFixed(2) : 0 }}
                 <span style="color: #00000000;">1</span>
                 积分:{{ userAccount?.point || 0 }}
               </span>
-              <span class="mr-3 ml-3"></span>
             </span>
 
             <v-menu open-on-hover>
               <template v-slot:activator="{ props }">
-                <div class="d-flex ml-3 align-center cursor-pointer" :class="{'active-route': routeActive === 5, 'vipBox': vip}" v-bind="props" @click="handleToPersonalCenter">
+                <div class="d-flex ml-8 align-center cursor-pointer" :class="{'active-route': route.path.includes('/recruit/personal/personalCenter'), 'vipBox': vip}" v-bind="props" @click="handleToPersonalCenter">
                   <div style="position: relative;">
                     <v-avatar class="avatar">
                       <v-img alt="" :src="getUserAvatar(baseInfo?.avatar, baseInfo?.sex)" ></v-img>
@@ -66,7 +65,6 @@
                   </div>
                   <div class="ml-3 commonHover userName">
                     {{ baseInfo?.name || userInfo.phone }}
-                    <v-icon :color="routeActive === 5 ? '#008979' : '#333'" size="30">mdi-menu-down</v-icon>
                   </div>
                 </div>
               </template>
@@ -106,7 +104,7 @@
               </v-list-item>
             </v-list>
           </v-menu> -->
-          <div class="d-flex align-center" v-if="showBall">
+          <div class="d-flex align-center ml-3" v-if="showBall">
             <message-notification v-if="showBall" :path="paths[3]" class="commonHover2" :class="{'active-route': routeActive === 3}"></message-notification>
           </div>
         </div>
@@ -174,9 +172,8 @@ const paths = [ // 有选中样式-路由列表
 ]
 
 const navList = ref([
-  { title: '门墩儿招聘', path: '/recruit/personal/recommend' },
+  { title: '门墩儿招聘', path: '/recruit/personal/recommend', dealActive: true },
   { title: '门墩儿猎头', path: '/headhunting' },
-  // { title: '门墩儿商城', path: '/pointsExchange' },
   { title: '门墩儿商城', path: '/pointsExchange', isEdit: true },
   { title: '火苗儿校企' },
   { title: '了解门墩儿', path: '/about' }
@@ -200,6 +197,18 @@ const routeActive = computed(() => {
   return index
 })
 
+// 左侧菜单选中状态
+const position = [
+  '/recruit/personal/recommend',
+  '/recruit/personal/position',
+  '/recruit/personal/company',
+  '/recruit/personal/company/details',
+  '/recruit/personal/position/details'
+]
+const menuActive = computed(() => (val)=> {
+  return val.dealActive ? position.indexOf(route.path) !== -1 : (route.path === val.path || route.path.includes(val.path))
+})
+
 const vip = computed(() => {
   return new Date().getTime() < userStore.userInfo?.vipExpireDate
 })

+ 1 - 1
src/utils/auth.js

@@ -12,7 +12,7 @@ export const isEnterprise = () => {
   const testUsePath = localStorage.getItem('routerTest')
   if (currentRoute?.path === '/' && (testUsePath?.includes(substr) || testUsePath?.includes('/enterpriseVerification'))) bool = true
   // console.log('currentRoute', currentRoute.path)
-  // console.log('isEnterpriseBool', bool)
+  // console.log('isEnterpriseBool', bool, currentRoute.path)
   return bool
 }
 

+ 1 - 0
src/views/integral/pointsManagement/index.vue

@@ -14,6 +14,7 @@
         :headers="headers[tab]"
         :loading="false"
         :elevation="0"
+        :showFixedLastItem="false"
         :isTools="false"
         :showPage="true"
         :total="total"

+ 1 - 0
src/views/recruit/enterprise/newlyAppointed/index.vue

@@ -13,6 +13,7 @@
 				:isTools="false"
 				height="calc(100vh - 400px)"
 				:showPage="true"
+				:showFixedLastItem="true"
 				:total="total"
 				:pageInfo="query"
 				itemKey="id"

+ 1 - 0
src/views/recruit/enterprise/search/recommend/index.vue

@@ -11,6 +11,7 @@
       :elevation="0"
       :isTools="false"
       :showPage="true"
+      height="calc(100vh - 410px)"
       :total="total"
       :page-info="query"
       itemKey="id"

+ 2 - 3
src/views/recruit/enterprise/talentMap/index.vue

@@ -15,7 +15,6 @@
             class="mr-3 my-2 py-0 px-2"
             density="comfortable"
             color="primary" variant="tonal"
-            v-bind="props"
             @click="clickChip(index)"
           >
             {{ val }}
@@ -33,7 +32,6 @@
         class="mr-3 my-2 py-0 px-2"
         density="comfortable"
         color="primary" variant="tonal"
-        v-bind="props"
       >
         {{ val }}
         <v-icon class="ml-1" style="margin-top: 1px;" @click="deleteChip(index)">mdi-close</v-icon>
@@ -46,7 +44,7 @@
       >
         <v-icon>mdi-plus-box</v-icon>
       </v-btn> -->
-      <v-btn icon="mdi-plus" class="mr-8" v-bind="props" variant="outlined" size="x-small" @click="moreLabels"></v-btn>
+      <v-btn icon="mdi-plus" class="mr-8" variant="outlined" size="x-small" @click="moreLabels"></v-btn>
       <span v-if="chosenLabels?.length" class="my-2" style="font-size: 14px;cursor: pointer;color: var(--color-999);" @click="resetLabel">清空标签</span>
     </template>
     <!-- 人员信息表单 -->
@@ -57,6 +55,7 @@
       :headers="headers"
       :loading="loading"
       :elevation="0"
+      height="calc(100vh - 380px)"
       :isTools="false"
       :showPage="true"
       :total="total"

+ 1 - 0
src/views/recruit/personal/PersonalCenter/tradeOrder/dynamic/rechargeVip.vue

@@ -8,6 +8,7 @@
     :isTools="false"
     :showPage="true"
     :total="total"
+    :showFixedLastItem="false"
     :page-info="query"
     itemKey="id"
     @pageHandleChange="handleChangePage"

+ 1 - 0
src/views/recruit/personal/PersonalCenter/wallet/myBalance/index.vue

@@ -30,6 +30,7 @@
         :headers="headerList[tab]"
         :loading="false"
         :elevation="0"
+        :showFixedLastItem="false"
         :isTools="false"
         :showPage="true"
         :total="total"

+ 22 - 13
src/views/recruit/personal/home/index.vue

@@ -7,22 +7,28 @@
     </div>
     <hotJobs></hotJobs>
     <div v-if="leftAdvertise.length" class="advertiseBox">
-      <div v-for="val in leftAdvertise" :key="val.mark" class="advertise" :style="{'width': val.show ? '180px' : '20px'}">
-        <div v-if="val.show">
-          <div class="advertise-title d-inline-block">
-            <span>广告</span>
-            <v-icon class="float-right cursor-pointer pb-1" color="primary" size="28" @click="val.show = false">mdi-close</v-icon>
+        <div v-for="val in leftAdvertise" :key="val.mark" class="advertise" :style="{'width': '20px'}">
+          <div v-if="!val.show" class=" advertise-box cursor-pointer" @mouseenter="val.show = true"></div>
+        </div>
+      </div>
+    <div class="default-width mb-5" :style="`margin-top: ${leftAdvertise.length * (-372)}px;`">
+      <div v-if="leftAdvertise.length" class="advertiseBox">
+        <div v-for="val in leftAdvertise" :key="val.mark" class="advertise" :style="{'width':'180px'}">
+          <div v-if="val.show">
+            <div class="advertise-title d-inline-block">
+              <span>广告</span>
+              <v-icon class="float-right cursor-pointer pb-1" color="primary" size="28" @click="val.show = false">mdi-close</v-icon>
+            </div>
+            <img class="advertise-img cursor-pointer" :src="val.img" @click.stop="handleLeftClick(val)">
           </div>
-          <img class="advertise-img cursor-pointer" :src="val.img" @click.stop="handleLeftClick(val)">
         </div>
-        <div v-else class="advertise-box cursor-pointer" @mouseenter="val.show = true"></div>
       </div>
-    </div>
-    <div class="default-width mb-5" :style="{'margin-top': leftAdvertise.length * (-372) + 'px'}">
-      <homeJobTypeCard></homeJobTypeCard>
-      <advertisementPage v-if="preferred.length" :list="preferred" :content="preferredContent" class="my-3"></advertisementPage>
-      <hotPromotedPositions :class="{'mt-10': !preferred.length}"></hotPromotedPositions>
-      <PopularEnterprises class="mt-10"></PopularEnterprises>
+      <div :style="`margin-top: ${leftAdvertise.length * (-372)}px;`">
+        <homeJobTypeCard></homeJobTypeCard>
+        <advertisementPage v-if="preferred.length" :list="preferred" :content="preferredContent" class="my-3"></advertisementPage>
+        <hotPromotedPositions :class="!preferred.length ? 'mt-10' : ''"></hotPromotedPositions>
+        <PopularEnterprises class="mt-10"></PopularEnterprises>
+      </div>
     </div>
   </div>
   <!-- 快速填写简易人才信息-弹窗 -->
@@ -146,9 +152,11 @@ onMounted(async () => {
 .advertiseBox {
   position: sticky;
   top: 128px;
+  left: 0;
   z-index: 999;
   width: 15px;
   max-width: 180px;
+  margin-left: -200px;
 }
 .advertise {
   // position: sticky;
@@ -157,6 +165,7 @@ onMounted(async () => {
   height: 372px;
   &-box {
     position: relative;
+    // left: 0;
     width: 15px;
     height: 100%;
     background-color: #00897B;

+ 3 - 1
src/views/recruit/personal/position/index.vue

@@ -123,8 +123,10 @@ const updateRouter = () => {
 }
 
 // 参数改变
-const handleQueryChange = (key, val) => { // val为字符串,数组的话用_下划线分隔
+const handleQueryChange = (key, val) => {
+  // val为字符串,数组的话用_下划线分隔
   routeQuery[key] = val
+  if (!routeQuery[key]) delete routeQuery[key]
   updateRouter()
 }