瀏覽代碼

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

lifanagju_citu 7 月之前
父節點
當前提交
99d0e6956c

+ 1 - 1
components.d.ts

@@ -30,9 +30,9 @@ declare module 'vue' {
     DatePicker: typeof import('./src/components/DatePicker/index.vue')['default']
     Details: typeof import('./src/components/Enterprise/details.vue')['default']
     Echarts: typeof import('./src/components/Echarts/index.vue')['default']
+    ElCascader: typeof import('element-plus/es')['ElCascader']
     ElConfigProvider: typeof import('element-plus/es')['ElConfigProvider']
     ElDatePicker: typeof import('element-plus/es')['ElDatePicker']
-    ElTimePicker: typeof import('element-plus/es')['ElTimePicker']
     Empty: typeof import('./src/components/Empty/index.vue')['default']
     File: typeof import('./src/components/Upload/file.vue')['default']
     HeadSearch: typeof import('./src/components/headSearch/index.vue')['default']

+ 1 - 1
src/views/recruit/components/message/index.vue

@@ -648,7 +648,7 @@ const handleSubmit = async () => {
   }
   const query = inviteRef.value.getQuery()
   if (!query.time) {
-    Snackbar.error('时间不能为空')
+    Snackbar.warning('时间不能为空')
     return
   }
   query.userId = info.value.userId

+ 41 - 16
src/views/recruit/enterprise/search/recommend/index.vue

@@ -30,11 +30,16 @@
           <span class="defaultLink ml-3 mt-2">{{ item?.name }}</span>
         </div>
       </template>
-      <!-- <template #actions="{ item }">
-        <v-btn color="primary" variant="text" @click="handleCommunicate(item)">立即沟通</v-btn>
-      </template> -->
+      <template #actions="{ item }">
+        <v-btn color="primary" variant="text" @click="handleInvite(item)">邀请面试</v-btn>
+      </template>
     </CtTable>
   </div>
+
+  <!-- 面试邀请 -->
+  <CtDialog :visible="showInvite" :widthType="4" titleClass="text-h6" title="邀请面试" @close="showInvite = false; itemData = {}" @submit="handleSubmit">
+    <InvitePage v-if="showInvite" ref="inviteRef" :itemData="itemData"></InvitePage>
+  </CtDialog>
 </template>
 
 <script setup>
@@ -42,12 +47,12 @@ defineOptions({ name: 'searchRecommend' })
 import { ref, computed } from 'vue'
 import { getPersonRecommendPage, getJobAdvertised } from '@/api/enterprise'
 import { timesTampChange } from '@/utils/date'
-// import { talkToUser, defaultTextEnt } from '@/hooks/web/useIM'
-// import { useRouter } from 'vue-router'
 import { dealDictArrayData } from '@/utils/position'
 import { getUserAvatar } from '@/utils/avatar'
+import InvitePage from '@/views/recruit/enterprise/resume/components/invite'
+import Snackbar from '@/plugins/snackbar'
+import { saveInterviewInvite } from '@/api/recruit/enterprise/interview'
 
-// const router = useRouter()
 const query = ref({
   pageNo: 1,
   pageSize: 10,
@@ -72,8 +77,10 @@ const headers = ref([
   { title: '户籍地', key: 'regName', sortable: false },
   { title: '婚姻状况', key: 'maritalStatusName', sortable: false },
   { title: '首次工作时间', key: 'firstWorkTime', sortable: false, value: item => timesTampChange(item.firstWorkTime, 'Y-M-D') },
-  // { title: '操作', key: 'actions', sortable: false }
+  { title: '操作', key: 'actions', sortable: false }
 ])
+const inviteRef = ref()
+const showInvite = ref(false)
 
 // 职位列表
 const getJobList = async () => {
@@ -81,7 +88,7 @@ const getJobList = async () => {
   if (data.length) {
     const list = dealDictArrayData([], data)
     selectItems.value.items = list.map(e => {
-      return { label: `${e.name}${e.areaName ? '_' + e.areaName : ''} ${e.payFrom ? e.payFrom + '-' : ''}${e.payTo}${e.payName ? '/' + e.payName : ''}`, value: e.id }
+      return { label: `${e.name}${e.areaName ? '_' + e.areaName : ''} ${e.payFrom ? e.payFrom + '-' : ''}${e.payTo}${e.payName ? '/' + e.payName : ''}`, value: e.id, data: e }
     })
   }
 }
@@ -103,7 +110,6 @@ const getData = async () => {
     loading.value = false
   }
 }
-// getData()
 
 // 推荐
 const handleChange = () => {
@@ -118,13 +124,32 @@ const handleChangePage = (e) =>{
   getData()
 }
 
-// 立即沟通
-// const handleCommunicate = async (item) => {
-//   const userId = item.userId
-//   await talkToUser({userId, text: defaultTextEnt})
-//   let url = `/recruit/enterprise/chatTools?id=${userId}`
-//   router.push(url)
-// }
+// 面试邀请
+const itemData = ref({})
+const handleInvite = ({ userId }) => {
+  const job = selectItems.value.items.find(e => e.value === query.value.jobId).data
+  itemData.value = {
+    userId,
+    job
+  }
+  showInvite.value = true
+}
+
+const handleSubmit = async () => {
+  const { valid } = await inviteRef.value.CtFormRef.formRef.validate()
+  if (!valid) {
+    return
+  }
+  const query = inviteRef.value.getQuery()
+  if (!query.time) {
+    Snackbar.warning('面试时间不能为空')
+    return
+  }
+  await saveInterviewInvite(query)
+  Snackbar.success('操作成功')
+  showInvite.value = false
+  itemData .value = {}
+}
 
 // 人才详情
 const handleToPersonDetail = ({ userId, id }) => {