Bladeren bron

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

lifanagju_citu 5 maanden geleden
bovenliggende
commit
4399fca867
50 gewijzigde bestanden met toevoegingen van 186 en 159 verwijderingen
  1. 35 18
      src/components/Enterprise/hotPromoted.vue
  2. 2 2
      src/components/Enterprise/info.vue
  3. 1 0
      src/components/FormUI/datePicker/index.vue
  4. 2 2
      src/components/Position/item.vue
  5. 2 2
      src/components/Position/longCompany.vue
  6. 4 4
      src/components/Position/longStrip.vue
  7. 1 1
      src/components/Position/similarPositions.vue
  8. 2 2
      src/components/PositionLongStrip/item.vue
  9. 2 3
      src/layout/personal/navBar.vue
  10. 20 2
      src/styles/index.css
  11. 0 0
      src/styles/index.min.css
  12. 7 2
      src/styles/index.scss
  13. 2 6
      src/styles/personal/navBar.css
  14. 0 0
      src/styles/personal/navBar.min.css
  15. 2 32
      src/styles/personal/navBar.scss
  16. 12 0
      src/utils/date.js
  17. 7 11
      src/views/login/index.vue
  18. 1 1
      src/views/mall copy/index.vue
  19. 1 1
      src/views/mall/components/GoodsItem/index.vue
  20. 17 7
      src/views/mall/components/prizeDraw.vue
  21. 3 2
      src/views/recruit/enterprise/entInfoSetting/informationSettingsComponents/basicInfo.vue
  22. 1 1
      src/views/recruit/enterprise/entInfoSetting/informationSettingsComponents/enterpriseLogo.vue
  23. 3 0
      src/views/recruit/enterprise/interviewManagement/components/invite.vue
  24. 3 0
      src/views/recruit/enterprise/jobFair/components/resume.vue
  25. 1 1
      src/views/recruit/enterprise/positionManagement/index.vue
  26. 3 1
      src/views/recruit/enterprise/resume/components/invite.vue
  27. 1 4
      src/views/recruit/enterprise/resume/components/screen.vue
  28. 1 1
      src/views/recruit/enterprise/search/retrieval/index.vue
  29. 2 2
      src/views/recruit/enterprise/systemManagement/groupAccount/components/link.vue
  30. 3 2
      src/views/recruit/enterprise/talentPool/components/details/baseInfo.vue
  31. 1 1
      src/views/recruit/personal/PersonalCenter/accountSettings/editPassword.vue
  32. 4 4
      src/views/recruit/personal/PersonalCenter/jobFeedback/components/interview/item.vue
  33. 3 3
      src/views/recruit/personal/PersonalCenter/jobFeedback/components/seenMe.vue
  34. 5 5
      src/views/recruit/personal/PersonalCenter/memberBenefits/taskCenter/components/suggest.vue
  35. 2 2
      src/views/recruit/personal/PersonalCenter/resume/template/index.vue
  36. 1 1
      src/views/recruit/personal/PersonalCenter/tradeOrder/components/detail.vue
  37. 2 2
      src/views/recruit/personal/PersonalCenter/wallet/myBalance/index.vue
  38. 2 2
      src/views/recruit/personal/company/components/companyItem.vue
  39. 1 4
      src/views/recruit/personal/company/index.vue
  40. 3 3
      src/views/recruit/personal/companyDetail/components/positions.vue
  41. 1 1
      src/views/recruit/personal/companyDetail/index.vue
  42. 1 1
      src/views/recruit/personal/home/components/advertisement/index.vue
  43. 1 1
      src/views/recruit/personal/home/components/advertisement/preferred.vue
  44. 3 3
      src/views/recruit/personal/home/components/homeJobTypeCard/index.vue
  45. 1 1
      src/views/recruit/personal/home/components/hotJobs.vue
  46. 1 1
      src/views/recruit/personal/home/index.vue
  47. 1 1
      src/views/recruit/personal/myWallet/myBalance/index.vue
  48. 1 4
      src/views/recruit/personal/position/components/conditionFilter.vue
  49. 4 3
      src/views/register/person.vue
  50. 7 6
      src/views/register/select.vue

+ 35 - 18
src/components/Enterprise/hotPromoted.vue

@@ -3,12 +3,15 @@
     <div class="sub-li" v-for="(item, index) in list" :key="index">
       <div v-if="item">
         <!-- 公司信息 -->
-        <div class="company-info-top align-center" @click="jumpToEnterpriseDetail(item.enterprise.id, true)">
+        <div class="company-info-top align-center" @click.stop="jumpToEnterpriseDetail(item.enterprise.id, true)">
           <div class="float-left">
             <v-img :src="item?.enterprise.logoUrl || 'https://minio.citupro.com/dev/menduner/company-avatar.png'" alt="" width="77" height="77" style="border-radius: 4px;"/>
           </div>
           <div class="company-info cursor-pointer">
-            <h3>{{ formatName(item.enterprise.anotherName || item.enterprise.name) }}</h3>
+            <h3 :ref="el => { if(el) companyNameRefs[index] = el }">
+              {{ formatName(item.enterprise.anotherName || item.enterprise.name) }}
+              <v-tooltip v-if="isTextOverflow[index]" activator="parent" location="top">{{ formatName(item.enterprise.anotherName || item.enterprise.name) }}</v-tooltip>
+            </h3>
             <p>
               {{ item?.enterprise.scaleName }}
               <span class="septal-line" v-if="item.enterprise.industryName"></span>
@@ -16,13 +19,13 @@
             </p>
           </div>
         </div>
-        <div class="px-5 py-1 ellipsis" :style="{'height': '33px', 'border-bottom': item.enterprise.welfareList && item.enterprise.welfareList.length ? '1px solid #EBEBEB' : 'none'}">
+        <div class="px-5 py-1 ellipsis-tag" :style="{'height': '33px', 'border-bottom': item.enterprise.welfareList && item.enterprise.welfareList.length ? '1px solid #EBEBEB' : 'none'}">
           <span class="welfareTag mr-5" v-for="(k, i) in item.enterprise.welfareList" :key="i">{{ k }}</span>
         </div>
         <!-- 职位列表 -->
         <ul class="company-job-list">
           <li class="company-job-item" v-for="(k, i) in item.jobList" :key="i" :class="{'company-job-item-hover': k.active}" @mouseenter="k.active = true" @mouseleave="k.active = false" @click="handleClickPosition(k)">
-            <div class="job-info" @mouseenter="k.active = true" @mouseleave="k.active = false" @click="handleClickPosition(k)">
+            <div class="job-info" @mouseenter="k.active = true" @mouseleave="k.active = false" @click.stop="handleClickPosition(k)">
               <div class="mb-2 d-flex">
                 <p :class="['name', 'cursor-pointer', {'default-active': k.active }]" :style="{'max-width': !k.payFrom && !k.payTo ? '290px' : '200px'}">{{ formatName(k.name) }}</p>
                 <span v-if="!k.payFrom && !k.payTo" class="salary">面议</span>
@@ -30,16 +33,16 @@
               </div>
               <div style="height: 24px; overflow: hidden; color: #808080;">
                 <span v-for="(j, index) in desc" :key="index">
-                  <span v-if="k[j.value] || (j.value === 'areaName' && !k.areaId)" class="mr-1 font-size-13">{{ (j.value === 'areaName' && !k.areaId) ? '全国' : k[j.value] }}</span>
-                  <span v-if="k[j.value] && index !== desc.length - 1 && (k[desc[index + 1].value] || (j.value === 'areaName' && !k.areaId))" class="septal-line ml-1"></span>
+                  <span v-if="k[j] || (j === 'areaName' && !k.areaId)" class="mr-1 font-size-13">{{ (j === 'areaName' && !k.areaId) ? '全国' : k[j] }}</span>
+                  <span v-if="k[j] && index !== desc.length - 1 && (k[desc[index + 1]] || (j === 'areaName' && !k.areaId))" class="septal-line ml-1"></span>
                 </span>
                 <span class="font-size-13 float-right">{{ timesTampChange(k.updateTime, 'Y-M-D') }}</span>
               </div>
             </div>
           </li>
         </ul>
-        <div class="moreBtn d-flex align-center justify-center" @click="handleMoreEnterprise(item)" @mouseenter="item.active = true" @mouseleave="item.active = false">
-          <span :style="{'text-decoration': item.active ? 'underline' : 'none'}">{{ $t('position.moreBtn') }}</span>
+        <div class="moreBtn d-flex align-center justify-center" @click.stop="handleMoreEnterprise(item)" @mouseenter="item.active = true" @mouseleave="item.active = false">
+          <span :style="{'border-bottom': item.active ? '1px solid #fff' : 'none'}">{{ $t('position.moreBtn') }}</span>
           <v-icon>mdi-menu-right</v-icon>
         </div>
       </div>
@@ -48,7 +51,7 @@
 </template>
 
 <script setup name="hotPromoted">
-import { ref, watch } from 'vue'
+import { ref, watch, nextTick } from 'vue'
 import { timesTampChange } from '@/utils/date'
 import { formatName } from '@/utils/getText'
 import { jumpToEnterpriseDetail } from '@/utils/position'
@@ -59,29 +62,37 @@ const props = defineProps({
     default: () => []
   }
 })
+
+const companyNameRefs = ref({})
+const isTextOverflow = ref({})
+
+// 检查文本是否溢出
+const checkTextOverflow = () => {
+  Object.entries(companyNameRefs.value).forEach(([index, element]) => {
+    if (element) {
+      isTextOverflow.value[index] = element.scrollWidth > element.clientWidth
+    }
+  })
+}
+
 const list = ref([])
 watch(
   () => props.items, 
   (newVal) => {
     list.value = newVal
+    nextTick(() => {
+      checkTextOverflow()
+    })
   },
   { immediate: true },
   { deep: true }
 )
-const desc = [
-  { value: 'areaName' },
-  { value: 'eduName' },
-  { value: 'expName' }
-]
+const desc = ['areaName', 'eduName', 'expName']
 
 // 职位详情
 const handleClickPosition = (k) => {
   window.open(`/recruit/personal/position/details/${k.id}`)
 }
-// 企业详情
-const handleClickEnterprise = (item) => {
-  window.open(`/recruit/personal/company/details/${item.enterprise.id}?key=briefIntroduction`)
-}
 
 // 查看更多职位
 const handleMoreEnterprise = (item) => {
@@ -112,6 +123,12 @@ const handleMoreEnterprise = (item) => {
     margin-right: 0;
   }
 }
+.ellipsis-tag {
+  white-space: nowrap;
+  overflow: hidden;
+  text-overflow: ellipsis;
+  color: #cec149 !important;
+}
 .company-info {
   float: left;
   margin-left: 16px;

+ 2 - 2
src/components/Enterprise/info.vue

@@ -4,7 +4,7 @@
     <div style="height: 50px; line-height: 50px;">
       <v-img class="float-left" :src="props.info.enterprise.logoUrl || 'https://minio.citupro.com/dev/menduner/company-avatar.png'" :width="45" height="45"></v-img>
       <div class="ml-3 float-left">
-        <p class="enterprise-name cursor-pointer" @click="jumpToEnterpriseDetail(props.info.enterprise.id, true)">{{ formatName(props.info.enterprise.anotherName || props.info.enterprise.name) }}</p>
+        <p class="enterprise-name cursor-pointer" @click.stop="jumpToEnterpriseDetail(props.info.enterprise.id, true)">{{ formatName(props.info.enterprise.anotherName || props.info.enterprise.name) }}</p>
       </div>
     </div>
     <div class="mt-3 border-bottom-dashed" style="font-size: 14px;">
@@ -14,7 +14,7 @@
       </div>
     </div>
     <div style="font-size: 12px;height: 50px; line-height: 50px">
-      <span class="float-right more-position" @click="jumpToEnterpriseDetail(info.enterprise.id, true, 1)">{{ $t('position.allBtn') }}<v-icon>mdi-chevron-right</v-icon></span>
+      <span class="float-right more-position" @click.stop="jumpToEnterpriseDetail(info.enterprise.id, true, 1)">{{ $t('position.allBtn') }}<v-icon>mdi-chevron-right</v-icon></span>
     </div>
   </div>
 </template>

+ 1 - 0
src/components/FormUI/datePicker/index.vue

@@ -18,6 +18,7 @@
           :date-format="item.dateFormat"
           :time-format="item.timeFormat"
           :default-value="item.defaultValue"
+          :default-time="item.defaultTime"
           :teleported="item.teleported || false"
           @change="modelValueUpDate"
           @clear="handleClear"

+ 2 - 2
src/components/Position/item.vue

@@ -2,7 +2,7 @@
   <div class="d-flex">
     <div class="position-box">
       <div class="sub-li" v-for="(item, index) in list" :key="index" :style="{'height': tab === 3 && item.hire ? '180px' : '149px'}">
-        <div class="job-info" @click="handlePosition(item)" @mouseenter="item.active = true" @mouseleave="item.active = false">
+        <div class="job-info" @click.stop="handlePosition(item)" @mouseenter="item.active = true" @mouseleave="item.active = false">
           <div class="sub-li-top">
             <div class="sub-li-info">
               <p :class="['name', {'default-active': item.active }]">{{ formatName(item.name) }}</p>
@@ -30,7 +30,7 @@
           </div>
           <div v-if="tab === 2" class="font-size-14 mb-3 text-end" style="color: #345768;">发布时间:{{ timesTampChange(item.createTime, 'Y-M-D h:m') }}</div>
         </div>
-        <div class="sub-li-bottom" @click="jumpToEnterpriseDetail(item.enterpriseId, true)">
+        <div class="sub-li-bottom" @click.stop="jumpToEnterpriseDetail(item.enterpriseId, true)">
           <div class="user-info">
             <div class="d-flex align-center">
               <v-avatar size="35">

+ 2 - 2
src/components/Position/longCompany.vue

@@ -6,7 +6,7 @@
           <div class="float-left mr-5">
             <v-img :src="item.logoUrl || 'https://minio.citupro.com/dev/menduner/company-avatar.png'" :alt="item.anotherName" :width="40" style="height: 40px;border-radius: 4px;"/>
           </div>
-          <h3 :class="{'default-active': item.active }" class="cursor-pointer" @click="jumpToEnterpriseDetail(item.id, true)">{{ formatName(item.anotherName || item.name) }}</h3>
+          <h3 :class="{'default-active': item.active }" class="cursor-pointer" @click.stop="jumpToEnterpriseDetail(item.id, true)">{{ formatName(item.anotherName || item.name) }}</h3>
           <p>{{ item.industryName }}<span v-if="item.industryName && item.scaleName" class="mx-2">|</span>{{ item.scaleName }}</p>
         </div>
         <div v-if="item.active">
@@ -20,7 +20,7 @@
             <span class="septal-line" v-if="i !== item.welfareList.length - 1 && val && item.welfareList[i + 1]"></span>
           </div>
         </div>
-        <div class="position" @click="jumpToEnterpriseDetail(item.id, true, 1)">
+        <div class="position" @click.stop="jumpToEnterpriseDetail(item.id, true, 1)">
           查看全部职位
           <v-icon>mdi-menu-right</v-icon>
         </div>

+ 4 - 4
src/components/Position/longStrip.vue

@@ -5,8 +5,8 @@
     >
       <div class="info-header">
         <div v-if="val.active && val.job.status === '0'" class="header-btn">
-          <v-btn v-if="props.showCancelBtn" class="half-button ml-3" color="primary" size="small" @click="handleCancel(val)">取消收藏</v-btn>
-          <v-btn class="half-button ml-3" color="primary" size="small" @click="toDetails(val)">立即沟通</v-btn>
+          <v-btn v-if="props.showCancelBtn" class="half-button ml-3" color="primary" size="small" @click.stop="handleCancel(val)">取消收藏</v-btn>
+          <v-btn class="half-button ml-3" color="primary" size="small" @click.stop="toDetails(val)">立即沟通</v-btn>
         </div>
         <div v-if="val.job.status === '1'" class="font-size-14 header-btn color-error">职位已关闭</div>
         <div class="img-box">
@@ -20,7 +20,7 @@
       <div class="info-content" >
         <div class="job-info">
           <div class="job-name ellipsis" :class="{'cursor-pointer': val.job.status === '0'}">
-            <span class="mr-3" :class="{'info-name': val.job.status === '0'}" @click="handleToPositionDetails(val)">{{ formatName(val.job.name) }}</span>
+            <span class="mr-3" :class="{'info-name': val.job.status === '0'}" @click.stop="handleToPositionDetails(val)">{{ formatName(val.job.name) }}</span>
             <span v-if="val?.job?.areaName || !val.job.areaId">[{{ !val.job.areaId ? '全国' : val.job.areaName }}]</span>
           </div>
           <div class="job-other">
@@ -35,7 +35,7 @@
             <v-img width="50" height="50" :src="val.enterprise.logoUrl || 'https://minio.citupro.com/dev/menduner/7.png'"></v-img>
           </div>
           <div class="ml-3">
-            <div class="cursor-pointer info-name" @click="jumpToEnterpriseDetail(val.enterprise.id)">{{ formatName(val.enterprise.anotherName || val.enterprise.name) }}</div>
+            <div class="cursor-pointer info-name" @click.stop="jumpToEnterpriseDetail(val.enterprise.id)">{{ formatName(val.enterprise.anotherName || val.enterprise.name) }}</div>
             <div class="mt-3 ellipsis color-666 font-size-13" style="max-width: 260px;">
               <span v-for="(k, i) in desc" :key="k">
                 {{ val.enterprise[k] }}

+ 1 - 1
src/components/Position/similarPositions.vue

@@ -1,7 +1,7 @@
 <template>
   <div class="position-box">
     <h4 class="mb-3">{{ $t('position.similarPosition') }}</h4>
-    <div v-for="(item, index) in props.list" :key="index" class="mb-2 cursor-pointer" @click="handlePosition(item)">
+    <div v-for="(item, index) in props.list" :key="index" class="mb-2 cursor-pointer" @click.stop="handlePosition(item)">
       <p class="recruit-name" :style="{'max-width': !item.payFrom && !item.payTo ? '230px' : '140px'}">{{ formatName(item.name) }}</p>
       <span v-if="!item.payFrom && !item.payTo" class="recruit-salary">面议</span>
       <span v-else class="recruit-salary">{{ item.payFrom ? item.payFrom + '-' : '' }}{{ item.payTo }}{{ item.payName ? '/' + item.payName :'' }}</span>

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

@@ -4,7 +4,7 @@
     <div class="position-and-company">
       <!-- 职位 -->
       
-      <div class="position" @mouseenter="item.positionActive = true" @mouseleave="item.positionActive = false" @click="handlePosition(item)">
+      <div class="position" @mouseenter="item.positionActive = true" @mouseleave="item.positionActive = false" @click.stop="handlePosition(item)">
         <div class="d-flex">
           <div v-if="item?.job?.hire" class="mr-3">
             <svg-icon name="pin" size="45"></svg-icon>
@@ -31,7 +31,7 @@
         </div>
       </div>
       <!-- 公司 -->
-      <div class="company" @click="jumpToEnterpriseDetail(item.enterprise.id, true)">
+      <div class="company" @click.stop="jumpToEnterpriseDetail(item.enterprise.id, true)">
         <div class="float-left">
           <v-img :src="item?.enterprise.logoUrl || 'https://minio.citupro.com/dev/menduner/company-avatar.png'" :alt="item.enterprise.anotherName" :width="40" style="height: 40px;border-radius: 4px;"/>
         </div>

+ 2 - 3
src/layout/personal/navBar.vue

@@ -31,9 +31,8 @@
           </div>
         </div>
         
-        <div class="d-flex user-nav">
+        <div class="d-flex" style="height: 50px;">
           <div class="btns d-flex align-center" v-if="!getToken() && showLoginBtn">
-            <!-- <v-btn class="half-button" border color="primary" size="small" @click="handleLogin">{{ $t('login.loginOrRegister') }}</v-btn> -->
             <v-btn color="primary" style="color: #fff !important; background-color: #00897B;" @click="handleLogin">{{ $t('login.loginOrRegister') }}</v-btn>
           </div>
           
@@ -114,7 +113,7 @@
         <v-radio v-for="item in enterpriseList" :key="item.enterpriseId" color="primary" :label="item.enterpriseName" :value="item.enterpriseId"></v-radio>
       </v-radio-group>
       <div class="text-end pr-5 pt-5">
-        <span class="color-error cursor-pointer text-decoration-underline" @click="newRegistering">{{ btnType ? '都不是我要的?去注册新企业' : '查看申请进度' }}</span>
+        <span class="color-error cursor-pointer border-bottom-error" @click="newRegistering">{{ btnType ? '都不是我要的?去注册新企业' : '查看申请进度' }}</span>
       </div>
     </CtDialog>
   </div>

+ 20 - 2
src/styles/index.css

@@ -133,6 +133,18 @@
   font-size: 20px;
 }
 
+.border-bottom-primary {
+  border-bottom: 1px solid var(--v-primary-base);
+}
+
+.border-bottom-error {
+  border-bottom: 1px solid var(--v-error-base);
+}
+
+.border-bottom-warning {
+  border-bottom: 1px solid var(--v-warning-base);
+}
+
 .buttons {
   height: 36px;
   width: 224px;
@@ -178,6 +190,13 @@
   overflow: hidden;
 }
 
+.ellipsis-2 {
+  display: -webkit-box;
+  -webkit-box-orient: vertical;
+  -webkit-line-clamp: 2;
+  overflow: hidden;
+}
+
 .septal-line {
   display: inline-block;
   width: 1px;
@@ -252,8 +271,7 @@
 
 .commonHover:hover {
   color: #00887A;
-  font-weight: 700;
-  text-decoration: underline;
+  border-bottom: 2px solid #00887A;
 }
 
 .commonHover2:hover {

File diff suppressed because it is too large
+ 0 - 0
src/styles/index.min.css


+ 7 - 2
src/styles/index.scss

@@ -61,6 +61,10 @@
 .font-size-19 { font-size: 19px; }
 .font-size-20 { font-size: 20px; }
 
+.border-bottom-primary { border-bottom: 1px solid var(--v-primary-base); }
+.border-bottom-error { border-bottom: 1px solid var(--v-error-base); }
+.border-bottom-warning { border-bottom: 1px solid var(--v-warning-base); }
+
 // 长按钮
 .buttons {
   height: 36px;
@@ -195,8 +199,9 @@
 
 .commonHover:hover {
   color: #00887A;
-  font-weight: 700;
-  text-decoration: underline;
+  // font-weight: 700;
+  // text-decoration: underline;
+  border-bottom: 2px solid #00887A;
 }
 .commonHover2:hover {
   color: #00887A;

+ 2 - 6
src/styles/personal/navBar.css

@@ -139,12 +139,8 @@
 
 .active-route {
   color: #008979;
-  text-decoration: underline !important;
   font-weight: 700;
-}
-
-.user-nav a {
-  text-decoration: none;
+  border-bottom: 2px solid #008979;
 }
 
 .menuList {
@@ -160,5 +156,5 @@
 .menuList-first-title:hover {
   color: #008979;
   font-weight: 700;
-  text-decoration: underline;
+  border-bottom: 2px solid #008979;
 }

File diff suppressed because it is too large
+ 0 - 0
src/styles/personal/navBar.min.css


+ 2 - 32
src/styles/personal/navBar.scss

@@ -128,44 +128,14 @@
 }
 .active-route {
   color: #008979;
-  text-decoration: underline !important; 
   font-weight: 700;
-} 
-.user-nav {
-  // position: absolute;
-  // right: 0;
-  // display: inline-block;
-  // color: var(--v-primary-base);
-  // height: 49px;
-  // line-height: 49px;
-}
-.user-nav .btns .btn-outline {
-  // border-radius: 8px;
-  // text-align: center;
-  // font-size: 14px;
-  // height: 26px;
-  // line-height: 26px;
-  // min-width: 0;
-  // padding: 0 11px;
-  // margin-left: 14px;
-  // background-color: transparent;
-}
-.user-nav .btn {
-  // display: inline-block;
-  // box-sizing: content-box;
-  // border: 1px solid var(--v-primary-base);
-  // letter-spacing: 1px;
-  // cursor: pointer;
-}
-.user-nav a {
-  text-decoration: none;
+  border-bottom: 2px solid #008979;
 }
 
 .menuList {
   display: flex;
   height: 50px;
   line-height: 55px;
-  // align-items: center;
   div {
     margin-left: 10px;
   }
@@ -173,5 +143,5 @@
 .menuList-first-title:hover {
   color: #008979;
   font-weight: 700;
-  text-decoration: underline;
+  border-bottom: 2px solid #008979;
 }

+ 12 - 0
src/utils/date.js

@@ -100,4 +100,16 @@ export function formatDate(date, format = 'YYYY-MM-DD HH:mm:ss') {
     format = 'YYYY-MM-DD HH:mm:ss';
   }
   return dayjs(date).format(format);
+}
+
+// 设置面试邀请默认时间
+export const getInterviewInviteDefaultTime = () => {
+  const today = new Date()
+  today.setDate(today.getDate() + 1)
+
+  const time = new Date(today.getFullYear(), today.getMonth(), today.getDate(), 10, 0, 0)
+  return {
+    time,
+    timeStamp: time.getTime()
+  }
 }

+ 7 - 11
src/views/login/index.vue

@@ -53,9 +53,9 @@
               </v-window-item> -->
             </v-window>
           </div>
-          <div class="font-size-14 tips">
-            <span class="float-left color-666 cursor-pointer" v-if="tab === 2" @click="router.push(isEnterpriseLogin ? '/forgotPasswordEnt': '/forgotPassword')">忘记密码</span>
-            <span class="float-right color-error cursor-pointer text-decoration-underline" @click="router.push('/register/selected')">还没有登录账户?去注册</span>
+          <div class="font-size-14">
+            <span class="float-left tips color-666 cursor-pointer" v-if="tab === 2" @click="router.push(isEnterpriseLogin ? '/forgotPasswordEnt': '/forgotPassword')">忘记密码</span>
+            <span class="float-right color-error cursor-pointer border-bottom-error" @click="router.push('/register/selected')">还没有登录账户?去注册</span>
           </div>
           <v-btn :loading="loginLoading" color="primary" class="white--text mt-5" min-width="350" @click.stop="handleLogin">
             {{ $t('login.login') }}
@@ -293,13 +293,12 @@ const windowOpen = (url) => {
   position: absolute;
   top: 0;
   right: 0;
-  padding: 15px 44px;
-  text-decoration: underline;
+  margin: 15px 44px;
+  border-bottom: 1px solid orange;
   color: orange; 
   cursor: pointer;
   font-weight: 400;
   &:hover {
-    text-decoration: underline;
     color: #fbb93e; 
   }
 }
@@ -309,7 +308,6 @@ const windowOpen = (url) => {
   background-color: #fff;
   border-radius: 8px;
   padding: 36px 50px;
-  // margin-right: 12px;
 }
 .left {
   display: flex;
@@ -321,10 +319,8 @@ const windowOpen = (url) => {
   justify-content: center;
   align-items: center;
 }
-.tips {
-  span:hover {
-    text-decoration: underline;
-  }
+.tips:hover {
+  border-bottom: 1px solid #666;
 }
 .color {
   color: var(--v-primary-base); 

+ 1 - 1
src/views/mall copy/index.vue

@@ -14,7 +14,7 @@
           <span v-if="getToken()" style="font-size: 42px; color: #10897bba; line-height: 50px;" class="ml-10 cursor-pointer" @click="router.push('/recruit/personal/personalCenter/wallet?key=1')">{{ accountData.point }}</span>
           <span v-else style="font-size: 30px; line-height: 50px;" class="ml-10 cursor-pointer color-primary" @click="handleLogin">请先登录</span>
         </div>
-        <div v-if="getToken()" class="color-666 font-size-14 cursor-pointer text-end mr-5 commonHover" @click="handleToTaskCenter">赚取积分</div>
+        <div v-if="getToken()" class="color-666 font-size-14 cursor-pointer text-end mr-5 commonHover2" @click="handleToTaskCenter">赚取积分</div>
       </div>
       <v-tabs v-model="tab" class="mt-1" align-tabs="start" color="primary" bg-color="#fff" @update:model-value="getPositionList">
         <v-tab :value="1">{{ $t('points.exchange') }}</v-tab>

+ 1 - 1
src/views/mall/components/GoodsItem/index.vue

@@ -12,7 +12,7 @@
           <span v-if="item.count" class="color-999 font-size-13 ml-1">x {{ item.count }}</span>
         </p>
         <p v-if="lottery && lottery.length" class="font-size-14" @click.stop="router.replace('/recruit/personal/personalCenter/tradeOrder?key=3')">
-          <span class="color-primary text-decoration-underline">奖品:{{ lottery.map(e => e.prize.name).join('、') }} </span>
+          <span class="color-primary border-bottom-primary">奖品:{{ lottery.map(e => e.prize.name).join('、') }} </span>
           <span v-if="!lottery[0].record.receiveInfo" class="color-999">(10天内未领取的,则视为主动放弃当前奖品)</span>
         </p>
       </div>

+ 17 - 7
src/views/mall/components/prizeDraw.vue

@@ -1,12 +1,16 @@
 <template>
   <div class="prizeDrawBox">
     <div class="d-flex flex-column align-center">
-      <div class="numberBox mb-5">房券抽奖</div>
-      <gridPage v-if="props.type === '1'" :lotteryId="props.lotteryId" :disabled="disabled" @start="disabled = true" @end="endCallback"></gridPage>
-      <slotMachinePage v-if="props.type === '2'" :lotteryId="props.lotteryId" height="120" :class="{'mb-3': disabled}" :disabled="disabled" @start="disabled = true" @end="endCallback"></slotMachinePage>
+      <CtDialog :visible="showDialog" :widthType="3" :footer="false" titleClass="text-h6" title="房券抽奖" @close="showDialog = false">
+        <div class="d-flex flex-column align-center">
+          <div class="numberBox mb-5">房券抽奖</div>
+          <gridPage v-if="props.type === '1'" :lotteryId="props.lotteryId" :disabled="disabled" @start="disabled = true" @end="endCallback"></gridPage>
+          <slotMachinePage v-if="props.type === '2'" :lotteryId="props.lotteryId" height="120" :class="{'mb-3': disabled}" :disabled="disabled" @start="disabled = true" @end="endCallback"></slotMachinePage>
+        </div>
+      </CtDialog>
 
       <v-card min-height="300" width="700" class="pa-5" :class="{'mt-3': !disabled}" style="position: relative;">
-        <div v-if="showDialog">
+        <div v-if="showPrize">
           <p v-for="(k, i) in prizeData" :key="i" class="color-primary">
             {{ k.prize.prompt }}
             <span class="color-999">(10天内未领取的,则视为主动放弃当前奖品)</span>
@@ -60,7 +64,7 @@
 defineOptions({ name: 'prizeDraw'})
 import gridPage from './prizeDraw/grid.vue'
 import slotMachinePage from './prizeDraw/slotMachine.vue'
-import { ref } from 'vue'
+import { onMounted, ref } from 'vue'
 import { getLuckLotteryRecordByOrderId } from '@/api/mall/prize'
 import { getMallUserAddressList } from '@/api/mall/address'
 import Snackbar from '@/plugins/snackbar'
@@ -78,6 +82,11 @@ const props = defineProps({
   }
 })
 
+const showDialog = ref(false)
+onMounted(() =>{
+  showDialog.value = true
+})
+
 const router = useRouter()
 const newAddress = ref({
   name: '',
@@ -128,10 +137,11 @@ const getRecord = async () => {
 }
 if (props.orderId) getRecord()
 
-const showDialog = ref(false)
+const showPrize = ref(false)
 const endCallback = () => {
   // if (!prizeData.value.length) return Snackbar.warning('您已经抽过奖了哦')
-  showDialog.value = true
+  showDialog.value = false
+  showPrize.value = true
   // disabled.value = true
 }
 

+ 3 - 2
src/views/recruit/enterprise/entInfoSetting/informationSettingsComponents/basicInfo.vue

@@ -114,9 +114,10 @@ const formItems = ref({
       key: 'openTime',
       value: null,
       mode: 'month',
-      default: '2010-01',
-      defaultValue: new Date(2010, 1),
+      // default: '2010-01',
+      // defaultValue: new Date(2010, 1),
       format: 'YYYY-MM',
+      disabledDate: true,
       label: '开业时间',
       labelWidth: 120,
       col: 6,

+ 1 - 1
src/views/recruit/enterprise/entInfoSetting/informationSettingsComponents/enterpriseLogo.vue

@@ -12,7 +12,7 @@
           <div class="my-3">
             <div class="uploadPrompt">LOGO大小:130*130像素</div>
             <div class="uploadPrompt">仅支持JPG、JPEG、PNG常见图片类</div>
-            <div class="uploadPrompt">型,且文件大于10M</div>
+            <div class="uploadPrompt">型,且文件不得大于10M</div>
           </div>
           <div>
             <v-btn prepend-icon="mdi mdi-upload" color="primary" @click.stop="openFileInput">

+ 3 - 0
src/views/recruit/enterprise/interviewManagement/components/invite.vue

@@ -6,6 +6,7 @@
 <script setup>
 defineOptions({ name: 'interview-invite-form'})
 import { ref } from 'vue'
+import { getInterviewInviteDefaultTime } from '@/utils/date'
 
 const props = defineProps({
   itemData: {
@@ -33,7 +34,9 @@ const formItems = ref({
       labelWidth: 78,
       key: 'time',
       label: '面试时间 *',
+      value: getInterviewInviteDefaultTime().timeStamp,
       format: "YYYY/MM/DD HH:mm",
+      defaultTime: getInterviewInviteDefaultTime().time,
       flexStyle: 'mb-7',
       disabledDate: true,
       rules: [v => !!v || '请选择面试时间']

+ 3 - 0
src/views/recruit/enterprise/jobFair/components/resume.vue

@@ -124,6 +124,7 @@ import { getUserAvatar } from '@/utils/avatar'
 import DatePicker from '@/components/FormUI/datePicker'
 import { timesTampChange } from '@/utils/date'
 import { formatName } from '@/utils/getText'
+import { getInterviewInviteDefaultTime } from '@/utils/date'
 
 const userStore = useUserStore() 
 const route = useRoute()
@@ -230,7 +231,9 @@ const formItems = ref({
       value: '',
       key: 'interviewDate',
       label: '面试时间 *',
+      value: getInterviewInviteDefaultTime().timeStamp,
       format: "YYYY/MM/DD HH:mm",
+      defaultTime: getInterviewInviteDefaultTime().time,
       flexStyle: 'mb-7',
       disabledDate: true,
       rules: [v => !!v || '请选择面试时间']

+ 1 - 1
src/views/recruit/enterprise/positionManagement/index.vue

@@ -17,7 +17,7 @@
       </div>
       <div class="color-666 font-size-14">
         <span>可发布职位数 <strong class="color-primary">{{ baseInfo?.entitlement?.publishJobCount || 0 }}</strong> 个, </span>
-        <span class="color-primary text-decoration-underline cursor-pointer" @click="router.push('/recruit/enterprise/membershipPackage?fromName=position')">可发布职位数不够用?点击去购买</span>
+        <span class="color-primary border-bottom-primary cursor-pointer" @click="router.push('/recruit/enterprise/membershipPackage?fromName=position')">可发布职位数不够用?点击去购买</span>
       </div>
       
       <div class="mt-3">

+ 3 - 1
src/views/recruit/enterprise/resume/components/invite.vue

@@ -7,6 +7,7 @@
 defineOptions({ name: 'formPage'})
 import { ref } from 'vue'
 import { formatName } from '@/utils/getText'
+import { getInterviewInviteDefaultTime } from '@/utils/date'
 
 const props = defineProps({
   itemData: {
@@ -15,7 +16,6 @@ const props = defineProps({
   }
 })
 
-
 const CtFormRef = ref()
 const formItems = ref({
   options: [
@@ -37,7 +37,9 @@ const formItems = ref({
       labelWidth: 78,
       key: 'time',
       label: '面试时间 *',
+      value: getInterviewInviteDefaultTime().timeStamp,
       format: "YYYY/MM/DD HH:mm",
+      defaultTime: getInterviewInviteDefaultTime().time,
       flexStyle: 'mb-7',
       disabledDate: true,
       rules: [v => !!v || '请选择面试时间']

+ 1 - 4
src/views/recruit/enterprise/resume/components/screen.vue

@@ -158,10 +158,7 @@ watch(
 <style scoped lang="scss">
 .reset-text {
   font-size: 14px;
-  color: var(--color-666);
-  &:hover {
-    color: var(--v-primary-base);
-  }
+  color: var(--v-primary-base);
 }
 :deep(.v-btn__content) {
   display: block;

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

@@ -16,7 +16,7 @@
         <div>
           <v-chip v-for="k in position" :key="k.id" label class="mr-3" closable @click:close="handleClose(k)">{{ k.nameCn }}</v-chip>
         </div>
-        <div class="text-end font-size-15 color-999 cursor-pointer color-999 clear" @click="handleClear">清空筛选条件</div>
+        <div class="text-end font-size-15 cursor-pointer color-primary clear" @click="handleClear">清空筛选条件</div>
       </div>
       <div class="text-center mt-3">
         <v-btn class="half-button" color="primary" @click="handleConfirm">搜 索</v-btn>

+ 2 - 2
src/views/recruit/enterprise/systemManagement/groupAccount/components/link.vue

@@ -34,7 +34,7 @@ const props = defineProps({
 })
 const inviteType = props.inviteType - 0
 
-const day = 30
+const day = 7 // 链接有效期
 const code = ref('')
 const accessUrl = import.meta.env.VITE_ACCESS_BASE_URL
 const shareUrlTxt = computed(() => {
@@ -63,7 +63,7 @@ getCode()
 // 生成邀请码标识
 const getGenerateCode = async (type) => {
   try {
-    const data = await enterpriseInviteGenerateCode({ type: props.inviteType, expireDay: 30 })
+    const data = await enterpriseInviteGenerateCode({ type: props.inviteType, expireDay: day })
     if (!data) Snackbar.error('生成邀请码标识失败')
     getCode(type)
   } catch (err) {

+ 3 - 2
src/views/recruit/enterprise/talentPool/components/details/baseInfo.vue

@@ -10,9 +10,9 @@
         offset-y="33" 
         :color="info?.sex ? (info?.sex === '1' ? '#1867c0' : 'error') : 'error'" 
         :icon="info?.sex ? (info?.sex === '1' ? 'mdi-gender-male' : 'mdi-gender-female') : 'mdi-gender-female'">
-        <v-avatar size=80 :image="info?.avatar || 'https://minio.citupro.com/dev/menduner/7.png'"></v-avatar>
+        <v-avatar size=80 :image="getUserAvatar(info?.avatar, info?.sex)"></v-avatar>
       </v-badge>
-      <v-avatar v-else size=80 :image="info?.avatar || 'https://minio.citupro.com/dev/menduner/7.png'"></v-avatar>
+      <v-avatar v-else size=80 :image="getUserAvatar(info?.avatar, info?.sex)"></v-avatar>
     </div>
     <!-- 信息 -->
     <div style="flex: 1;">
@@ -73,6 +73,7 @@ defineOptions({name: 'enterprise-talentPool-details-baseInfo'})
 import { ref } from 'vue'
 import { timesTampChange } from '@/utils/date'
 import { dealDictObjData } from '@/utils/position'
+import { getUserAvatar } from '@/utils/avatar'
 
 const props = defineProps({
   data: Object

+ 1 - 1
src/views/recruit/personal/PersonalCenter/accountSettings/editPassword.vue

@@ -5,7 +5,7 @@
     <div v-if="!showEdit" class="login-user mb-4">
       当前登录账号: 
       <span>{{ userInfo.phone }}</span>
-      <span class="color-primary ml-5 text-decoration-underline cursor-pointer" @click="showEdit = true">修改密码</span>
+      <span class="color-primary ml-5 cursor-pointer border-bottom-primary" @click.stop="showEdit = true">修改密码</span>
     </div>
     <div class="editPageBox">
       <editPasswordPage

+ 4 - 4
src/views/recruit/personal/PersonalCenter/jobFeedback/components/interview/item.vue

@@ -5,8 +5,8 @@
   >
     <div class="info-header">
       <div v-if="val.active && val.status === '0' && val.job.status === '0'" class="header-btn">
-        <v-btn color="primary" size="small" @click="handleAgree(val)">同意</v-btn>
-        <v-btn class="ml-3" color="error" size="small" @click="handleRefuse(val)">拒绝</v-btn>
+        <v-btn color="primary" size="small" @click.stop="handleAgree(val)">同意</v-btn>
+        <v-btn class="ml-3" color="error" size="small" @click.stop="handleRefuse(val)">拒绝</v-btn>
       </div>
       <div v-if="val.job.status === '1'" class="font-size-14 header-btn color-error">职位已关闭</div>
       <!-- <div v-if="tab === '1' || tab === '98'" class="float-right font-size-13" :style="{'padding': '12px 12px 0 0', 'color': tab === '1' ? 'var(--v-primary-base)' : 'var(--v-error-base)'}">
@@ -30,7 +30,7 @@
         </div>
         <div class="job-info color-666">
           <div class="job-name ellipsis" style="max-width: 410px;">
-            <span class="mr-3" :class="{'cursor-pointer': val.job.status === '0', 'position-name': val.job.status === '0'}" @click="handleToPositionDetails(val)">{{ formatName(val.job.name) }}</span>
+            <span class="mr-3" :class="{'cursor-pointer': val.job.status === '0', 'position-name': val.job.status === '0'}" @click.stop="handleToPositionDetails(val)">{{ formatName(val.job.name) }}</span>
             <span v-if="!val.job.payFrom && !val.job.payTo">面议</span>
             <span v-else>{{ val.job.payFrom ? val.job.payFrom + '-' : '' }}{{ val.job.payTo }}{{ val.job.payName ? '/' + val.job.payName : '' }}</span>
           </div>
@@ -39,7 +39,7 @@
               <v-img width="30" height="30" :src="val.enterprise.logoUrl || 'https://minio.citupro.com/dev/menduner/company-avatar.png'"></v-img>
             </div>
             <div class="ellipsis" style="max-width: 400px;">
-              <span class="mx-2 enterprise-name" @click="jumpToEnterpriseDetail(val.enterprise.id, true)">{{ formatName(val.enterprise.anotherName || val.enterprise.name) }}</span>
+              <span class="mx-2 enterprise-name" @click.stop="jumpToEnterpriseDetail(val.enterprise.id, true)">{{ formatName(val.enterprise.anotherName || val.enterprise.name) }}</span>
             [
               <span>{{ val.enterprise.industryName }}</span>
               <span>&nbsp;·&nbsp;{{ val.enterprise.scaleName }}</span>

+ 3 - 3
src/views/recruit/personal/PersonalCenter/jobFeedback/components/seenMe.vue

@@ -13,7 +13,7 @@
                 <p class="mt-2">{{ item?.post?.nameCn }}</p>
               </div>
             </div>
-            <div class="company" @click="jumpToEnterpriseDetail(item.enterprise.id, false)">
+            <div class="company" @click.stop="jumpToEnterpriseDetail(item.enterprise.id, false)">
               <div class="float-left">
                 <v-img :src="item?.enterprise.logoUrl || 'https://minio.citupro.com/dev/menduner/company-avatar.png'" :alt="item.enterprise.anotherName" :width="40" style="height: 40px;border-radius: 4px;"/>
               </div>
@@ -38,10 +38,10 @@
     </div>
     <div v-else class="mt-8 tips">
       <span class="color-error" v-if="userInfo?.vipExpireDate > Date.now() && !userInfo?.entitlement?.viewersList">
-        当前会员套餐的福利不包含谁看过我,<span class="text-decoration-underline cursor-pointer" @click="goBuy">去升级</span>
+        当前会员套餐的福利不包含谁看过我,<span class="cursor-pointer border-bottom-error" @click.stop="goBuy">去升级</span>
       </span>
       <span class="color-error" v-if="!userInfo?.vipExpireDate || (userInfo?.vipExpireDate && userInfo?.vipExpireDate < Date.now())">
-        谁看过我为会员福利内容,<span class="text-decoration-underline cursor-pointer" @click="goBuy">去开通</span>
+        谁看过我为会员福利内容,<span class="cursor-pointer border-bottom-error" @click.stop="goBuy">去开通</span>
       </span>
     </div>
   </div>

+ 5 - 5
src/views/recruit/personal/PersonalCenter/memberBenefits/taskCenter/components/suggest.vue

@@ -3,7 +3,7 @@
   <div>
     <div class="d-flex align-center justify-space-between">
       <div class="resume-title my-5">{{ $t('taskCenter.suggestTask') }}</div>
-      <v-btn prepend-icon="mdi-refresh" color="primary" variant="text" class="mr-4" @click="getRecommendTaskList">刷新</v-btn>
+      <v-btn prepend-icon="mdi-refresh" color="primary" variant="text" class="mr-4" @click.stop="getRecommendTaskList">刷新</v-btn>
     </div>
     <div v-if="list.length">
       <v-progress-linear v-if="loading" color="primary" height="6" indeterminate rounded></v-progress-linear>
@@ -14,7 +14,7 @@
             <!-- <svg-icon class="mx-1" name="integral" size="24"></svg-icon>
             <span style="color: #10897bad;">{{ item.point }}</span> -->
           </div>
-          <v-chip label :color="item.complete ? 'success' : 'error'" @click="handleClick(item)">{{ item.complete ? '已完成' : '未完成' }}</v-chip>
+          <v-chip label :color="item.complete ? 'success' : 'error'" @click.stop="handleClick(item)">{{ item.complete ? '已完成' : '未完成' }}</v-chip>
         </div>
       </div>
     </div>
@@ -43,7 +43,7 @@ const getRecommendTaskList = async () => {
       point: 50,
       sort: 99,
       title: '购买会员套餐',
-      url: '/recruit/personal/personalCenter/memberBenefits/membershipPackage',
+      path: '/recruit/personal/personalCenter/memberBenefits/membershipPackage',
     })
   } finally {
     loading.value = false
@@ -52,8 +52,8 @@ const getRecommendTaskList = async () => {
 getRecommendTaskList()
 
 const handleClick = (item) => {
-  if (item.complete || !item.url) return
-  router.push(item.url)
+  if (item.complete || !item.path) return
+  router.push(item.path)
 }
 </script>
 

+ 2 - 2
src/views/recruit/personal/PersonalCenter/resume/template/index.vue

@@ -21,10 +21,10 @@
       </div>
       <div v-else class="mt-8 tips">
         <span class="color-error" v-if="userStore.userInfo?.vipExpireDate > Date.now() && !userStore.userInfo?.entitlement?.resumeTemplate">
-          当前会员套餐的福利不包含简历模板,<span class="text-decoration-underline cursor-pointer" @click="goBuy">去升级</span>
+          当前会员套餐的福利不包含简历模板,<span class="cursor-pointer border-bottom-error" @click="goBuy">去升级</span>
         </span>
         <span class="color-error" v-if="!userStore.userInfo?.vipExpireDate || (userStore.userInfo?.vipExpireDate && userStore.userInfo?.vipExpireDate < Date.now())">
-          简历模板为会员福利内容,<span class="text-decoration-underline cursor-pointer" @click="goBuy">去开通</span>
+          简历模板为会员福利内容,<span class="cursor-pointer border-bottom-error" @click="goBuy">去开通</span>
         </span>
       </div>
     </div>

+ 1 - 1
src/views/recruit/personal/PersonalCenter/tradeOrder/components/detail.vue

@@ -24,7 +24,7 @@
           <template #spuName="{ item }">
             <span class="color-primary cursor-pointer" @click="handleToGoodsDetail(item)">{{ item.spuName }}</span>
             <p v-if="order.lottery && order.lottery.length" class="color-999  mt-1 " @click.stop="router.push('/recruit/personal/personalCenter/tradeOrder?key=3')">
-              <span class="color-primary cursor-pointer text-decoration-underline">奖品:{{ order.lottery.map(e => e.prize.name).join('、') }}</span>
+              <span class="color-primary cursor-pointer border-bottom-primary">奖品:{{ order.lottery.map(e => e.prize.name).join('、') }}</span>
               <span v-if="!order.lottery[0].record.receiveInfo" class="color-999">(10天内未领取的,则视为主动放弃当前奖品)</span>
             </p>
           </template>

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

@@ -10,8 +10,8 @@
           <div class="item-value">
             {{ userAccount?.balance && userAccount?.balance > 0 ? (userAccount?.balance / 100.0).toFixed(2) : 0 }}
             <span
-              class="text-decoration-underline cursor-pointer"
-              style="color: #666; font-size: 16px;"
+              class="cursor-pointer"
+              style="color: #666; font-size: 16px; border-bottom: 1px solid #666"
               @click="handleRecharge"
             >充值</span>
           </div>

+ 2 - 2
src/views/recruit/personal/company/components/companyItem.vue

@@ -1,7 +1,7 @@
 <template>
   <div class="company-box">
     <div class="sub-li" v-for="item in list" :key="item.enterprise.id">
-      <div class="company-info-top" @click="jumpToEnterpriseDetail(item.enterprise.id, true)" @mouseenter="item.active = true" @mouseleave="item.active = false">
+      <div class="company-info-top" @click.stop="jumpToEnterpriseDetail(item.enterprise.id, true)" @mouseenter="item.active = true" @mouseleave="item.active = false">
         <div class="float-left">
           <v-img :src="item.enterprise.logoUrl || 'https://minio.citupro.com/dev/menduner/company-avatar.png'" :alt="item.enterprise.anotherName" :width="40" style="height: 40px;border-radius: 4px;"/>
         </div>
@@ -12,7 +12,7 @@
       </div>
       <v-divider class="mx-4"></v-divider>
       <div class="company-info-bottom">
-        <div v-if="item?.job && Object.keys(item.job).length" class="job-hover" @click="handleClickPosition(item.job)">
+        <div v-if="item?.job && Object.keys(item.job).length" class="job-hover" @click.stop="handleClickPosition(item.job)">
           <div class="mb-1 d-flex">
             <p :class="['mr-3', 'cursor-pointer', 'name']" :style="{'max-width': !item.job.payFrom && !item.job.payTo ? '200px' : '120px'}">{{ formatName(item.job.name) }}</p>
             <span v-if="!item.job.payFrom && !item.job.payTo" class="salary">面议</span>

+ 1 - 4
src/views/recruit/personal/company/index.vue

@@ -157,12 +157,9 @@ const handleChangePage = (index) => {
   position: absolute;
   bottom: 0;
   right: 30px;
-  color: var(--color-999);
+  color: var(--v-primary-base);
   font-size: 14px;
   cursor: pointer;
-  &:hover {
-    color: var(--v-primary-base);
-  }
 }
 .company-content {
   height: calc(100vh - 100px);

+ 3 - 3
src/views/recruit/personal/companyDetail/components/positions.vue

@@ -7,7 +7,7 @@
           :class="['category-item', {'default-active': k.active}, {'font-weight-bold': k.active}]" 
           v-for="k in positionCategory" 
           :key="k.id"
-          @click="handleClickCategory(k)"
+          @click.stop="handleClickCategory(k)"
         >{{ k.id === -1 ? `${k.label}` : `${k.label} (${k.number})` }}</span>
       </div>
     </div>
@@ -39,8 +39,8 @@
         @mouseleave="val.active = false"
       >
         <div>
-          <p v-if="val.job.name.includes('style')" :class="['name', {'default-active': val.active }]" v-html="val.job.name" @click="handlePosition(val)"></p>
-          <p v-else :class="['name', {'default-active': val.active }]" @click="handlePosition(val)">{{ formatName(val.job.name) }}</p>
+          <p v-if="val.job.name.includes('style')" :class="['name', {'default-active': val.active }]" v-html="val.job.name" @click.stop="handlePosition(val)"></p>
+          <p v-else :class="['name', {'default-active': val.active }]" @click.stop="handlePosition(val)">{{ formatName(val.job.name) }}</p>
           <div style="line-height: 40px;">
             <span v-for="k in desc" :key="k.mdi">
               <span v-if="val.job[k.value] || (k.value === 'areaName' && !val.job.areaId)" class="mr-5">

+ 1 - 1
src/views/recruit/personal/companyDetail/index.vue

@@ -23,7 +23,7 @@
           <!-- 是否关注该企业 -->
           <v-tooltip location="bottom">
             <template v-slot:activator="{ props }">
-              <v-icon v-bind="props" class="ml-5 mr-2" size="25" :color="isCollection ? 'error' : ''" @click="handleFollow">{{ isCollection ? 'mdi-heart' : 'mdi-heart-outline' }}</v-icon>
+              <v-icon v-bind="props" class="ml-5 mr-2" size="25" :color="isCollection ? 'error' : ''" @click.stop="handleFollow">{{ isCollection ? 'mdi-heart' : 'mdi-heart-outline' }}</v-icon>
             </template>
             <span>关注该企业</span>
           </v-tooltip>

+ 1 - 1
src/views/recruit/personal/home/components/advertisement/index.vue

@@ -9,7 +9,7 @@
     </div>
 
     <div no-gutters class="mt-5 d-flex flex-wrap" style="width: 100%;">
-      <v-card v-for="(k, i) in list" :key="i" class="col-item" @click="jumpToEnterpriseDetail(k.link, true)">
+      <v-card v-for="(k, i) in list" :key="i" class="col-item" @click.stop="jumpToEnterpriseDetail(k.link, true)">
         <v-img :src="k.img"/>
       </v-card>
     </div>

+ 1 - 1
src/views/recruit/personal/home/components/advertisement/preferred.vue

@@ -83,7 +83,7 @@
             <div class="job-title">职位更新</div>
             <p class="font-size-14">{{ timesTampChange(k.job.updateTime) }}</p>
           </div>
-          <div class="font-size-14 cursor-pointer view-detail" @click="handlePosition(k)">点击查看详情
+          <div class="font-size-14 cursor-pointer view-detail" @click.stop="handlePosition(k)">点击查看详情
             <v-icon>mdi-pan-right</v-icon>
           </div>
         </div>

+ 3 - 3
src/views/recruit/personal/home/components/homeJobTypeCard/index.vue

@@ -35,7 +35,7 @@
     <v-card v-if="rightObj.show" class="right-item-box elevation-5" :style="{'left': itemLeft + 'px'}">
       <div class="rightCard d-flex">
         <div class="px-3 pt-2">
-          <v-icon color="primary" size="30" @click="handleMouseLeave">mdi-close-circle-outline</v-icon>
+          <v-icon color="primary" size="30" @click.stop="handleMouseLeave">mdi-close-circle-outline</v-icon>
         </div>
         <div class="rightContent">
           <div
@@ -47,7 +47,7 @@
             class="jobItem ma-3"
             v-for="val in rightObj.data.children" 
             :key="val.id" 
-            @click="handleJobClick(val)"
+            @click.stop="handleJobClick(val)"
           >
           {{ val.nameCn }}</div>
         </div>
@@ -55,7 +55,7 @@
     </v-card>
     <v-card height="392px" class="card rightCardBox">
       <v-carousel show-arrows="hover" cycle :model-value="0">
-        <v-carousel-item v-for="(item, i) in carouselList" :key="i" @click="handleClick(item)">
+        <v-carousel-item v-for="(item, i) in carouselList" :key="i" @click.stop="handleClick(item)">
           <div style="height: 392px; overflow: hidden;" :class="{'cursor-pointer': item.link}">
             <v-img :src="item.img" :lazy-src="item.img" cover style="height: 100%; overflow: hidden;">
               <template v-slot:placeholder>

+ 1 - 1
src/views/recruit/personal/home/components/hotJobs.vue

@@ -2,7 +2,7 @@
   <div class="default-width mb-6 d-flex align-center justify-center">
     <span class="mr-2 color-primary" style="width: 80px; min-width: 80px;">{{ $t('position.popularPosition') }}:</span>
     <div style="overflow: hidden; height: 40px; ">
-      <span v-for="(item, index) in jobs" :key="index" label size="small" class="mr-2 my-1 tag"  @click="handleClick(item)">{{ item.nameCn }}</span>
+      <span v-for="(item, index) in jobs" :key="index" label size="small" class="mr-2 my-1 tag"  @click.stop="handleClick(item)">{{ item.nameCn }}</span>
     </div>
   </div>
 </template>

+ 1 - 1
src/views/recruit/personal/home/index.vue

@@ -13,7 +13,7 @@
             <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="handleLeftClick(val)">
+          <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>

+ 1 - 1
src/views/recruit/personal/myWallet/myBalance/index.vue

@@ -12,7 +12,7 @@
             <span
               class="text-decoration-underline cursor-pointer"
               style="color: #666; font-size: 16px;"
-              @click="handleRecharge"
+              @click.stop="handleRecharge"
             >充值</span>
           </div>
         </div>

+ 1 - 4
src/views/recruit/personal/position/components/conditionFilter.vue

@@ -130,9 +130,6 @@ watch(
   margin-right: 12px;
   font-size: 14px;
   margin-top: 4px;
-  color: var(--color-999);
-  &:hover {
-    color: var(--v-primary-base);
-  }
+  color: var(--v-primary-base);
 }
 </style>

+ 4 - 3
src/views/register/person.vue

@@ -6,7 +6,9 @@
       <div class="mt-10">
         <phoneFrom ref="phoneRef" openVerify @handleEnter="handleRegister" :phone="phone"></phoneFrom>
       </div>
-      <div v-if="!isMobile" class="font-size-14 tips color-primary cursor-pointer text-end" @click="router.push('/login')">已有账号?去登录</div>
+      <div v-if="!isMobile" class="font-size-14 text-end">
+        <span class="tips color-primary cursor-pointer" @click="router.push('/login')">已有账号?去登录</span>
+      </div>
       <v-btn :loading="loading" color="primary" class="white--text mt-5" min-width="370" @click="handleRegister">{{ isCompany ? '下一步' : '注册' }}</v-btn>
       <div class="login-tips mt-3" v-if="!isCompany">
         <v-icon v-if="isAgree" size="25" color="primary" class="mr-1" @click="isAgree = !isAgree">mdi-check-circle</v-icon>
@@ -120,12 +122,11 @@ const windowOpen = (url) => {
 .login-tips {
   width: 100%;
   font-size: 14px;
-  // text-align: center;
   display: flex;
   justify-content: center;
   align-items: center;
 }
 .tips:hover {
-  text-decoration: underline;
+  border-bottom: 1px solid var(--v-primary-base);
 }
 </style>

+ 7 - 6
src/views/register/select.vue

@@ -4,13 +4,13 @@
     <div class="register-content">
       <h2 style="color: #666; font-weight: 400;">请选择您当前注册的身份</h2>
       <div class="d-flex mt-16">
-        <div style="width: 50%;" class="cursor-pointer item pa-3" @click="handleToRegister('/register/company')">
+        <div style="width: 50%;" class="cursor-pointer item d-flex flex-column justify-center align-center" @click="handleToRegister('/register/company')">
           <v-icon color="primary" size="100">mdi-home-city-outline</v-icon>
-          <div class="color-primary" style="font-size: 24px">企业用户</div>
+          <span class="color-primary" style="font-size: 24px">企业用户</span>
         </div>
-        <div style="width: 50%; border-left: 1px solid #ccc;" class="cursor-pointer item pa-3" @click="handleToRegister('/register/person')">
+        <div style="width: 50%; border-left: 1px solid #ccc;" class="cursor-pointer item d-flex flex-column justify-center align-center" @click="handleToRegister('/register/person')">
           <v-icon color="primary" size="100">mdi-account-plus-outline</v-icon>
-          <div class="color-primary" style="font-size: 24px">个人用户</div>
+          <span class="color-primary" style="font-size: 24px">个人用户</span>
         </div>
       </div>
     </div>
@@ -59,8 +59,9 @@ const handleToRegister = (path) => {
   padding: 90px 62px;
 }
 .item:hover {
-  color: #00897B;
-  text-decoration: underline;
+  span {
+    border-bottom: 1px solid #00897B;
+  }
 }
 .navBar {
   position: absolute;

Some files were not shown because too many files changed in this diff