Bladeren bron

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

zhengnaiwen_citu 4 maanden geleden
bovenliggende
commit
979d4bd18c

+ 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>

+ 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"

+ 16 - 2
src/views/recruit/entRegister/register.vue

@@ -350,28 +350,35 @@ if (info && Object.keys(info).length && info.status === '2') {
 const contactSubmit = () => {
   let falseValueIndex = null
   let falseKey = null
+  let phoneList = []
   let emailList = []
   contactCopy.value.forEach((e, index) => {
     if (falseValueIndex !== null) return
     if (e && Object.keys(e).length) {
       Object.keys(e).forEach(key => {
         if (falseValueIndex !== null) return
-        if (!e[key]) {
+        if (!e[key] ) {
           falseValueIndex = index
           falseKey = key
         }
       })
     }
+    if (e.email && !checkCompanyEmail(e.email)) {
+      falseValueIndex = index
+      falseKey = 'emailCheck'
+    }
     if (e.password && e.passwordConfirm && e.password !== e.passwordConfirm) {
       falseValueIndex = index
       falseKey = 'compareFalse'
     }
+    if (e.phone) phoneList.push(e.phone)
     if (e.email) emailList.push(e.email)
   })
   const textList =  {
     contactName: '姓名',
     phone: '联系电话',
     email: '企业邮箱',
+    emailCheck: '企业邮箱格式',
     password: '登录密码',
     passwordConfirm: '登录密码',
   }
@@ -386,10 +393,17 @@ const contactSubmit = () => {
     Confirm(t('common.confirmTitle'), text, { hideCancelBtn: true })
     return
   }
+  // 联系电话不能相同
+  const phone_duplicates = findFirstDuplicateWithIndices(phoneList)
+  if (phone_duplicates) {
+    let text = phone_duplicates.firstIndex ? `联系人${phone_duplicates.firstIndex}的联系电话和联系人${phone_duplicates.secondIndex} 的联系电话重复,请修改!` : `管理员的联系电话和联系人${phone_duplicates.secondIndex} 的联系电话重复,请修改!`
+    Confirm(t('common.confirmTitle'), text, { hideCancelBtn: true })
+    return
+  }
   // 邮箱不能相同
   const duplicates = findFirstDuplicateWithIndices(emailList)
   if (duplicates) {
-    let text = duplicates.firstIndex ? `联系人${duplicates.firstIndex}的企业邮箱和联系人${duplicates.secondIndex}的企业邮箱重复,请修改!` : `管理员的企业邮箱和联系人${duplicates.secondIndex}的企业邮箱重复,请修改!`
+    let text = duplicates.firstIndex ? `联系人${duplicates.firstIndex}的企业邮箱和联系人${duplicates.secondIndex} 的企业邮箱重复,请修改!` : `管理员的企业邮箱和联系人${duplicates.secondIndex} 的企业邮箱重复,请修改!`
     Confirm(t('common.confirmTitle'), text, { hideCancelBtn: true })
     return
   }

+ 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"