Bladeren bron

精英管理-不合适

Xiao_123 10 maanden geleden
bovenliggende
commit
dbb85a0ac1

+ 16 - 2
src/views/recruit/enterprise/personnelManagement/components/screen.vue

@@ -1,5 +1,5 @@
 <template>
-  <div>
+  <div class="d-flex align-center">
     <CommonStyle v-for="(val, i) in list" :key="i" :btnTitle="val.title">
       <v-list>
         <v-list-item
@@ -14,6 +14,12 @@
         </v-list-item>
       </v-list>
     </CommonStyle>
+    <div class="mr-5" v-if="props.tab === 0">
+      <v-radio-group v-model="selected" inline style="height: 28px;" @update:modelValue="handleChangeSelected">
+        <v-radio v-model="selected" label="新投递" value="0" color="primary" hide-details density="compact" class="mr-3"></v-radio>
+        <v-radio v-model="selected" label="已查看" value="1" color="primary" hide-details density="compact"></v-radio>
+      </v-radio-group>
+    </div>
     <span class="reset-text cursor-pointer ml-3" @click="handleReset">重置</span>
   </div>
 </template>
@@ -26,11 +32,13 @@ import { getDict } from '@/hooks/web/useDictionaries'
 import { dealDictArrayData } from '@/utils/position'
 import CommonStyle from './commonStyle.vue'
 
-const emit = defineEmits(['search', 'reset'])
+const emit = defineEmits(['search', 'reset', 'select'])
 const props = defineProps({
   tab: Number
 })
 
+const selected = ref()
+
 const list = ref([
   {
     title: '应聘岗位',
@@ -101,9 +109,15 @@ const handleReset = () => {
     e.title = e.defaultTitle
     return e
   })
+  selected.value = ''
   emit('reset')
 }
 
+// 新投递&已查看选择
+const handleChangeSelected = (e) => {
+  emit('select', e)
+}
+
 watch(
   () => props.tab,
   () => {

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

@@ -33,7 +33,7 @@
         </div>
         <v-btn v-if="tab === 0 || tab === 1" color="primary" variant="text" @click="handleEliminate(item)">不合适</v-btn>
         <div v-if="tab === 1">
-          <v-btn color="primary" variant="text" @click="handleInterviewInvite(item)">邀请面试</v-btn>
+          <!-- <v-btn color="primary" variant="text" @click="handleInterviewInvite(item)">邀请面试</v-btn> -->
           <v-btn color="primary" variant="text" @click="handleAction('', 0, item)">入职</v-btn>
         </div>
       </template>
@@ -43,7 +43,7 @@
 
 <script setup>
 defineOptions({ name: 'table-page'})
-import { ref, computed } from 'vue'
+import { ref, computed, watch } from 'vue'
 import { previewFile } from '@/utils'
 import { personJobCvLook, joinEliminate, personEntryByEnterprise } from '@/api/recruit/enterprise/personnel'
 import { useI18n } from '@/hooks/web/useI18n'
@@ -73,6 +73,22 @@ const headers = ref([
   { title: '岗位薪资', key: 'job', value: item => `${item.job.payFrom}-${item.job.payTo}/${item.job.payName}`, sortable: false },
   { title: '操作', value: 'actions', sortable: false }
 ])
+const unfit = { title: '类型', key: 'unfitType', sortable: false, value: item => item.type === '0' ? '简历不合适' : '面试不合适' }
+const delivery = { title: '类型', key: 'deliveryType', sortable: false, value: item => item.status === '0' ? '新投递' : '已查看' }
+
+const list = [0, 4]
+watch(
+  () => props.tab,
+  (val) => {
+    if (list.indexOf(val) !== -1) {
+      headers.value.splice(-1, 0, val === 0 ? delivery : unfit)
+    } else {
+      const index = headers.value.findIndex(item => item.key === val === 0 ? 'deliveryType' : 'unfitType')
+      if (index > -1) headers.value.splice(index, 1)
+    }
+  },
+  { immediate: true }
+)
 
 // 人才详情
 const handleToPersonDetail = ({ userId, id }) => {

+ 9 - 2
src/views/recruit/enterprise/personnelManagement/index.vue

@@ -7,7 +7,7 @@
       </v-tabs>
       <TextInput v-model="textItems.value" :item="textItems" @appendInnerClick="handleSearch" @enter="handleSearch"></TextInput>
     </div>
-    <Screen :tab="tab" @search="handleScreen" @reset="handleScreenReset"></Screen>
+    <Screen :tab="tab" @search="handleScreen" @reset="handleScreenReset" @select="handleSelect"></Screen>
 
     <v-window v-model="tab" class="mt-1">
       <v-window-item v-for="k in tabList" :value="k.value" :key="k.value">
@@ -62,7 +62,7 @@ const textItems = ref({
 const items = ref([])
 const getList = async () => {
   const api = tabList.value[tab.value].api
-  query.value.status = tab.value === 0 ? null : tabList.value[tab.value].status
+  if (tab.value !== 0) query.value.status = tabList.value[tab.value].status
   const { list, total: number } = await api(query.value)
   if (!list.length) {
     items.value = []
@@ -107,9 +107,16 @@ const handleScreenReset = () => {
     pageNo: 1,
     status: tab.value
   }
+  if (tab.value === 0) query.value.status = null
   if (textItems.value.value) query.value.name = textItems.value.value
   getList()
 }
+
+const handleSelect = (e) => {
+  query.value.pageNo = 1
+  query.value.status = e
+  getList()
+}
 </script>
 
 <style scoped lang="scss">