communication.vue 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
  1. <template>
  2. <div>
  3. <div v-if="list.length">
  4. <div class="position-item mb-3 job-closed" v-for="(val, i) in list" :key="i" @mouseenter="handleMouseEnter(val)" @mouseleave="val.active = false">
  5. <div class="info-header">
  6. <div v-if="val.active" class="header-btn">
  7. <v-btn class="half-button" color="primary" size="small">继续沟通</v-btn>
  8. <v-btn v-if="props.tab === 4" class="half-button ml-3" color="primary" size="small">取消感兴趣</v-btn>
  9. </div>
  10. <div class="img-box">
  11. <v-avatar :image="val.contact.avatars || 'https://minio.citupro.com/dev/menduner/7.png'" size="x-small"></v-avatar>
  12. <span class="name">
  13. <span class="mx-3">{{ val.contact.name }}</span>
  14. <span class="gray">{{ val.contact.postNameCn }}</span>
  15. </span>
  16. </div>
  17. </div>
  18. <div class="info-content">
  19. <div class="job-info">
  20. <div class="job-name cursor-pointer">
  21. <span class="mr-3 info-name">{{ formatName(val.name) }}</span>
  22. <span>[{{ val.areaName }}]</span>
  23. </div>
  24. <div class="job-other">
  25. <span v-if="!val.payFrom && !val.payTo" class="salary">面议</span>
  26. <span v-else class="salary">{{ val.payFrom ? val.payFrom + '-' : '' }}{{ val.payTo }}</span>
  27. <v-chip class="mx-3" color="primary" label size="small">{{ val.expName }}</v-chip>
  28. <v-chip color="primary" label size="small">{{ val.eduName }}</v-chip>
  29. </div>
  30. </div>
  31. <div v-if="props.tab === 3" class="interview-info">
  32. <div>面试时间:2022.03.15 17:00</div>
  33. <div class="mt-3">面试地点:先烈中路100号大院203室</div>
  34. </div>
  35. <div v-else class="company-info">
  36. <v-img width="50" height="50" :src="val.contact.avatars || 'https://minio.citupro.com/dev/menduner/7.png'"></v-img>
  37. <div class="ml-3">
  38. <div class="cursor-pointer info-name">{{ val.enterprise.name }}</div>
  39. <div class="mt-3">
  40. <v-chip color="primary" label size="small" class="mr-3" v-for="k in desc" :key="k">{{ val.enterprise[k] }}</v-chip>
  41. </div>
  42. </div>
  43. </div>
  44. </div>
  45. </div>
  46. </div>
  47. <Empty v-else></Empty>
  48. </div>
  49. </template>
  50. <script setup>
  51. // 沟通过
  52. defineOptions({ name: 'position-communication' })
  53. import { ref } from 'vue'
  54. import Empty from '@/components/Empty'
  55. import { formatName } from '@/utils/getText'
  56. const props = defineProps({
  57. tab: {
  58. type: Number,
  59. default: 0
  60. }
  61. })
  62. const list = ref([])
  63. const desc = ['industryName', 'scaleName']
  64. const handleMouseEnter = (val) => {
  65. if (props.tab !==3 ) val.active = true
  66. }
  67. </script>
  68. <style scoped lang="scss">
  69. .position-item {
  70. height: 144px;
  71. background-color: #fff;
  72. border-radius: 12px;
  73. &:hover {
  74. box-shadow: 0 16px 40px 0 rgba(153, 153, 153, .3);
  75. }
  76. .info-header {
  77. height: 48px;
  78. background: linear-gradient(90deg,#f5fcfc,#fcfbfa);
  79. .img-box {
  80. padding: 12px 24px;
  81. .name {
  82. color: var(--color-222);
  83. font-weight: 400;
  84. font-size: 13px;
  85. .gray {
  86. color: var(--color-666);
  87. }
  88. }
  89. }
  90. .header-btn {
  91. padding: 10px 10px 0 0;
  92. float: right;
  93. .v-btn {
  94. z-index: 1;
  95. }
  96. }
  97. }
  98. .info-content {
  99. display: flex;
  100. padding: 16px 24px;
  101. justify-content: space-between;
  102. .job-info {
  103. width: 430px;
  104. min-width: 430px;
  105. max-width: 430px;
  106. font-weight: 500;
  107. font-size: 16px;
  108. .job-name {
  109. height: 22px;
  110. line-height: 22px;
  111. color: var(--color-222);
  112. margin-bottom: 12px;
  113. }
  114. .job-other {
  115. color: var(--v-error-base);
  116. height: 22px;
  117. line-height: 22px;
  118. }
  119. }
  120. .company-info {
  121. display: flex;
  122. align-items: center
  123. }
  124. .interview-info {
  125. color: var(--color-333);
  126. font-size: 15px;
  127. }
  128. }
  129. }
  130. .info-name:hover {
  131. color: var(--v-primary-base);
  132. }
  133. </style>