index.vue 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. <template>
  2. <div class="resume-box" style="position: relative; height: 100%;">
  3. <div class="resume-header">
  4. <div class="resume-title">屏蔽企业设置</div>
  5. </div>
  6. <div class="mt-5" v-if="userInfo?.vipFlag && userInfo?.vipExpireDate && userInfo?.vipExpireDate > Date.now()">
  7. <!-- 选择 -->
  8. <div class="d-flex align-center pb-5" style="border-bottom: 1px solid #dddddd;">
  9. <div style="color: #777;">选择企业: </div>
  10. <Autocomplete v-model="item.value" :item="item" @search="getEnterpriseData"></Autocomplete>
  11. <v-btn class="ml-3" color="primary" :disabled="!item.value" @click="handleJoin">确认屏蔽</v-btn>
  12. </div>
  13. <!-- 展示 -->
  14. <v-chip v-for="k in dataList" class="mt-3 mr-3" :key="k.id">
  15. <span class="cursor-pointer">{{ k.name }}</span>
  16. <template v-slot:append>
  17. <v-icon class="ml-2" @click="handleDelete(k)">mdi-close-circle</v-icon>
  18. </template>
  19. </v-chip>
  20. </div>
  21. <div v-else class="mt-8 tips">
  22. <span class="color-error">
  23. 屏蔽企业为会员福利内容,<span class="text-decoration-underline cursor-pointer" @click="goBuy">去开通</span>
  24. </span>
  25. </div>
  26. </div>
  27. </template>
  28. <script setup>
  29. import {
  30. getBlockEnterpriseList,
  31. handleBlockEnterprise,
  32. handleUnBlockEnterprise,
  33. } from '@/api/recruit/personal/resume/blockEnt.js'
  34. import { enterpriseSearchByName } from '@/api/recruit/personal/resume'
  35. import Snackbar from '@/plugins/snackbar'
  36. import Confirm from '@/plugins/confirm'
  37. import { ref } from 'vue'
  38. defineOptions({name: 'resume-blockEnt'})
  39. import { useUserStore } from '@/store/user'
  40. import { useRouter } from 'vue-router'
  41. const router = useRouter()
  42. const userStore = useUserStore()
  43. let userInfo = ref(JSON.parse(localStorage.getItem('userInfo')) || {})
  44. userStore.$subscribe((mutation, state) => {
  45. if (state.userInfo && Object.keys(state.userInfo).length) userInfo.value = state?.userInfo
  46. })
  47. // 获取数据
  48. const dataList = ref([])
  49. const getData = async () => {
  50. const { list } = await getBlockEnterpriseList()
  51. dataList.value = list || []
  52. }
  53. getData()
  54. // 取消屏蔽
  55. const handleDelete = ({ id, name }) => {
  56. Confirm('系统提示', `是否取消屏蔽【${name}】?`).then(async () => {
  57. await handleUnBlockEnterprise(id)
  58. getData()
  59. Snackbar.success('取消屏蔽成功!')
  60. })
  61. }
  62. // 屏蔽
  63. const handleJoin = async () => {
  64. await handleBlockEnterprise({ enterpriseId: item.value.value })
  65. getData()
  66. Snackbar.success('加入屏蔽企业成功!')
  67. }
  68. const goBuy = () => {
  69. router.push('/recruit/personal/personalCenter/memberBenefits/membershipPackage')
  70. }
  71. // 企业名称下拉列表
  72. const getEnterpriseData = async (name) => {
  73. if (!name) return
  74. const data = await enterpriseSearchByName({ name })
  75. item.value.items = data
  76. }
  77. const item = ref({
  78. type: 'autocomplete',
  79. key: 'enterpriseId',
  80. value: null,
  81. default: null,
  82. label: '请输入企业名称搜索',
  83. outlined: true,
  84. clearable: true,
  85. hideDetails: true,
  86. itemText: 'value',
  87. itemValue: 'key',
  88. width: '400',
  89. search: getEnterpriseData,
  90. items: []
  91. })
  92. </script>
  93. <style lang="scss" scoped>
  94. .tips {
  95. position: absolute;
  96. top: 50%;
  97. left: 50%;
  98. transform: translate(-50%, -50%);
  99. }
  100. </style>