Xiao_123 10 kuukautta sitten
vanhempi
commit
38c5f9a800

+ 1 - 1
src/views/recruit/enterprise/personnelManagement/components/table.vue

@@ -29,7 +29,7 @@
       </template>
       <template v-slot:item.actions="{ item }">
         <div v-if="tab === 0">
-          <v-btn color="primary" variant="text" @click="handlePreviewResume(item)">查看简历</v-btn>
+          <v-btn color="primary" variant="text" @click="handlePreviewResume(item)">查看附件</v-btn>
         </div>
         <v-btn v-if="tab === 0 || tab === 1" color="primary" variant="text" @click="handleEliminate(item)">不合适</v-btn>
         <div v-if="tab === 1">

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

@@ -45,7 +45,7 @@ const tab = ref(0)
 const tabList = ref([
   { label: '投递简历', value: 0, api: getPersonCvPage, status: null },
   { label: '已邀约', value: 1, api: getInterviewInvitePage, status: '0' },
-  { label: '已发offer', value: 2, api: getInterviewInvitePage, status: '1' },
+  // { label: '已发offer', value: 2, api: getInterviewInvitePage, status: '1' },
   { label: '已入职', value: 3, api: getInterviewInvitePage, status: '2' },
   { label: '不合适', value: 4, api: personCvUnfitPage },
 ])

+ 41 - 13
src/views/recruit/enterprise/publicRecruitmentManagement/deliver/components/table.vue

@@ -1,11 +1,20 @@
 <template>
   <div>
     <div class="text-end">
-      <v-btn v-if="tab === '2'" color="primary" :disabled="selected.length ? false : true" variant="tonal" @click="handleAction('all', 0, {})">不合适</v-btn>
-      <v-btn v-if="tab === '3'" color="primary" :disabled="selected.length ? false : true" variant="tonal" @click="handleAction('all', 1, {})">入职</v-btn>
+      <v-btn v-if="tab === 1" color="primary" :disabled="selected.length ? false : true" variant="tonal" @click="handleAction('all', 0, {})">不合适</v-btn>
+      <v-btn v-if="tab === 2" color="primary" :disabled="selected.length ? false : true" variant="tonal" @click="handleAction('all', 1, {})">入职</v-btn>
+    </div>
+    <div class="mr-5 d-flex align-center" v-if="tab === 0">
+      <div style="width: 200px;">
+        <v-radio-group v-model="radio" inline style="height: 28px;" @update:modelValue="handleChangeSelected">
+          <v-radio v-model="radio" label="已报名" value="0" hide-details density="compact" class="mr-3"></v-radio>
+          <v-radio v-model="radio" label="已查看" value="1" hide-details density="compact"></v-radio>
+        </v-radio-group>
+      </div>
+      <div class="reset-text cursor-pointer ml-3" @click="handleReset">重置</div>
     </div>
     <v-data-table
-      class="mt-3"
+      class="mt-5"
       v-model="selected"
       :items="items"
       :headers="headers"
@@ -28,12 +37,12 @@
           <span class="defaultLink ml-3">{{ item?.person?.name }}</span>
         </div>
       </template>
-      <!-- 已报名:查看简历,已邀约:不合适,已发offer:入职,已入职:结算 -->
       <template v-slot:item.actions="{ item }">
-        <v-btn v-if="tab === '0' && item.url" color="primary" variant="text" @click="handlePreviewResume(item)">查看附件</v-btn>
-        <v-btn v-if="tab === '2'" color="primary" variant="text" @click="handleAction('', 0, item)">不合适</v-btn>
-        <v-btn v-if="tab === '1'" color="primary" variant="text" @click="handleAction('', 1, item)">入职</v-btn>
-        <v-btn v-if="tab === '4'" color="primary" variant="text" @click="handleSettlement(item)">结算</v-btn>
+        <v-btn v-if="tab === 0 && item.url" color="primary" variant="text" @click="handlePreviewResume(item)">查看附件</v-btn>
+        <v-btn v-if="tab === 1" color="primary" variant="text" @click="handleAction('', 0, item)">不合适</v-btn>
+        <v-btn v-if="tab === 2" color="primary" variant="text" @click="handleAction('', 1, item)">入职</v-btn>
+        <v-btn v-if="tab === 3" color="primary" variant="text" @click="handleSettlement(item)">结算</v-btn>
+        <v-btn v-if="radio === '1'" color="primary" variant="text">邀请面试</v-btn>
       </template>
     </v-data-table>
   </div>
@@ -49,10 +58,11 @@ import Snackbar from '@/plugins/snackbar'
 import { useUserStore } from '@/store/user'
 
 const { t } = useI18n()
+const radio = ref()
 const userStore = useUserStore()
-const emit = defineEmits(['refresh'])
+const emit = defineEmits(['refresh', 'radio', 'reset'])
 const props = defineProps({
-  tab: String,
+  tab: Number,
   items: Array,
   tabList: Array
 })
@@ -73,7 +83,7 @@ const headers = ref([
   { title: '最高学历', key: 'person.eduName', sortable: false },
   { title: '岗位薪资', key: 'job', value: item => `${item.job.payFrom}-${item.job.payTo}/${item.job.payName}`, sortable: false },
   { title: '推荐人', key: 'recommendPerson', value: item => item?.recommendPerson?.name, sortable: false },
-  { title: '进度', key: 'status', sortable: false, value: item => props.tabList.find(e => e.value === item.status).label },
+  { title: '进度', key: 'status', sortable: false, value: item => props.tabList.find(e => e.value === Number(item.status)).label },
   { title: '结果反馈', key: '', sortable: false },
   { title: '操作', value: 'actions' }
 ])
@@ -116,6 +126,16 @@ const handlePreviewResume = async ({ url, id }) => {
   await hireJobCvRelLook(id)
   previewFile(url)
 }
+
+// 已报名、已查看
+const handleChangeSelected = (e) => {
+  emit('radio', e)
+}
+
+const handleReset = () => {
+  radio.value = ''
+  emit('reset')
+}
 </script>
 
 <style scoped lang="scss">
@@ -123,7 +143,15 @@ const handlePreviewResume = async ({ url, id }) => {
   background-color: #f7f8fa !important;
 }
 :deep(.v-selection-control__input) {
-  // color: var(--v-primary-base) !important;
-  color: #767778;
+  color: var(--v-primary-base) !important;
+  // color: #767778;
+}
+
+.reset-text {
+  font-size: 14px;
+  color: var(--color-666);
+  &:hover {
+    color: var(--v-primary-base);
+  }
 }
 </style>

+ 27 - 16
src/views/recruit/enterprise/publicRecruitmentManagement/deliver/index.vue

@@ -1,15 +1,15 @@
 <template>
   <v-card class="pa-5 card-box">
     <div class="d-flex justify-space-between">
-      <v-tabs v-model="query.status" align-tabs="start" color="primary" bg-color="#f7f8fa" @update:model-value="handleUpdateTab">
+      <v-tabs v-model="tab" align-tabs="start" color="primary" bg-color="#f7f8fa" @update:model-value="handleUpdateTab">
         <v-tab v-for="k in tabList" :value="k.value" :key="k.value">{{ k.label }}</v-tab>
       </v-tabs>
       <TextInput v-model="textItems.value" :item="textItems" @appendInnerClick="handleSearch" @enter="handleSearch"></TextInput>
     </div>
 
-    <v-window v-model="query.status" class="mt-1">
+    <v-window v-model="tab" class="mt-1">
       <v-window-item v-for="k in tabList" :value="k.value" :key="k.value">
-        <TablePage :items="items" :tab="k.value" :tabList="tabList" @refresh="getList"></TablePage>
+        <TablePage :items="items" :tab="k.value" :tabList="tabList" @refresh="getList" @radio="handleSelect" @reset="handleReset"></TablePage>
         <CtPagination
           v-if="total > 0"
           :total="total"
@@ -25,7 +25,6 @@
 <script setup>
 defineOptions({ name: 'public-recruitment-deliver'})
 import { ref } from 'vue'
-import { getDict } from '@/hooks/web/useDictionaries'
 import { getHireJobCvPage } from '@/api/recruit/public/delivery'
 import { dealDictObjData } from '@/utils/position'
 import TablePage from './components/table.vue'
@@ -34,10 +33,17 @@ const total = ref(0)
 const query = ref({
   pageNo: 1,
   pageSize: 10,
-  status: '0'
+  status: null
 })
+const tab = ref(0)
 const items = ref([])
-const tabList = ref([])
+const tabList = ref([
+  { label: '简历投递', value: 0, status: null },
+  { label: '已邀约', value: 1, status: 2 },
+  { label: '已入职', value: 2, status: 3 },
+  { label: '已结算', value: 3, status: 4 },
+  { label: '不合适', value: 4, status: 99 }
+])
 const textItems = ref({
   type: 'text',
   value: '',
@@ -47,15 +53,6 @@ const textItems = ref({
   appendInnerIcon: 'mdi-magnify'
 })
 
-// 获取tab列表项
-const getTabData = () => {
-  getDict('menduner_hire_job_cv_status').then(({ data }) => {
-    data = data?.length && data || []
-    tabList.value = data
-  })
-}
-getTabData()
-
 const getList = async () => {
   const res = await getHireJobCvPage(query.value)
   if (!res.list.length) {
@@ -80,7 +77,22 @@ const handleSearch = () => {
   getList()
 }
 
+// 已查看、已报名查看
+const handleSelect = (e) => {
+  query.value.status = e
+  query.value.pageNo = 1
+  getList()
+}
+
+const handleReset = () => {
+  query.value.status = null
+  query.value.pageNo = 1
+  getList()
+}
+
+// tab
 const handleUpdateTab = () => {
+  query.value.status = tabList.value.find(e => e.value === tab.value).status
   query.value.pageNo = 1
   getList()
 }
@@ -93,5 +105,4 @@ const handleChangePage = (i) => {
 </script>
 
 <style scoped lang="scss">
-
 </style>