Sfoglia il codice sorgente

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

lifanagju_citu 1 anno fa
parent
commit
c03263b21e
26 ha cambiato i file con 68 aggiunte e 63 eliminazioni
  1. 1 1
      src/components/Enterprise/components/positions.vue
  2. 1 1
      src/components/Enterprise/details.vue
  3. 1 1
      src/components/Enterprise/info.vue
  4. 0 1
      src/components/PositionLongStrip/item.vue
  5. 0 0
      src/utils/position.js
  6. 1 1
      src/views/recruit/enterprise/enterpriseCenter/components/positions.vue
  7. 1 1
      src/views/recruit/enterprise/personnelManagement/components/screen.vue
  8. 1 1
      src/views/recruit/enterprise/personnelManagement/index.vue
  9. 1 1
      src/views/recruit/enterprise/positionManagement/components/add.vue
  10. 3 3
      src/views/recruit/enterprise/positionManagement/components/details.vue
  11. 1 1
      src/views/recruit/enterprise/positionManagement/index.vue
  12. 34 28
      src/views/recruit/enterprise/publicRecruitmentManagement/deliver/components/table.vue
  13. 1 1
      src/views/recruit/enterprise/publicRecruitmentManagement/deliver/index.vue
  14. 1 1
      src/views/recruit/enterprise/talentPool/components/details/baseInfo.vue
  15. 1 1
      src/views/recruit/personal/PersonalCenter/components/communication.vue
  16. 1 1
      src/views/recruit/personal/PersonalCenter/components/companyCollection.vue
  17. 1 1
      src/views/recruit/personal/PersonalCenter/components/delivery.vue
  18. 1 1
      src/views/recruit/personal/PersonalCenter/components/interestedMe.vue
  19. 1 1
      src/views/recruit/personal/PersonalCenter/components/positionCollection.vue
  20. 1 1
      src/views/recruit/personal/PersonalCenter/components/seenMe.vue
  21. 1 1
      src/views/recruit/personal/company/index.vue
  22. 1 1
      src/views/recruit/personal/home/components/hotPromotedPositions.vue
  23. 1 1
      src/views/recruit/personal/home/components/popularEnterprises.vue
  24. 3 3
      src/views/recruit/personal/position/components/details.vue
  25. 1 1
      src/views/recruit/personal/position/components/rightRecommend.vue
  26. 8 8
      src/views/recruit/personal/position/index.vue

+ 1 - 1
src/components/Enterprise/components/positions.vue

@@ -81,7 +81,7 @@ import { reactive, ref, provide } from 'vue'
 import { useRoute, useRouter } from 'vue-router'
 import { timesTampChange } from '@/utils/date'
 import { getDict } from '@/hooks/web/useDictionaries'
-import { dealDictObjData } from '@/views/recruit/personal/position/components/dict'
+import { dealDictObjData } from '@/utils/position'
 import { getJobAdvertisedPositionCount, getJobAreaByEnterpriseId, getJobAdvertisedSearch } from '@/api/position'
 import MPagination from '@/components/CtPagination'
 import expType from '@/views/recruit/personal/position/components/conditionFilter/expType.vue'

+ 1 - 1
src/components/Enterprise/details.vue

@@ -72,7 +72,7 @@ import EnterpriseIntroduction from './components/introduction.vue'
 import recruitmentPositions from './components/positions.vue'
 import { getEnterpriseDetails, getEnterpriseSubscribeCheck, getEnterpriseSubscribe, getEnterpriseUnsubscribe, enterpriseClick } from '@/api/enterprise'
 import { timesTampChange } from '@/utils/date'
-import { dealDictObjData } from '@/views/recruit/personal/position/components/dict'
+import { dealDictObjData } from '@/utils/position'
 import { useRoute, useRouter } from 'vue-router'
 
 const props = defineProps({

+ 1 - 1
src/components/Enterprise/info.vue

@@ -24,7 +24,7 @@
 <script setup>
 defineOptions({ name: 'enterprise-info' })
 import { ref } from 'vue'
-import { dealDictObjData } from '@/views/recruit/personal/position/components/dict'
+import { dealDictObjData } from '@/utils/position'
 const props = defineProps({
   info: {
     type: Object,

+ 0 - 1
src/components/PositionLongStrip/item.vue

@@ -46,7 +46,6 @@
       <div class="footer-right">
         <v-avatar size="x-small" :image="item.contact.avatar || 'https://minio.citupro.com/dev/menduner/7.png'"></v-avatar>
         <span class="mx-2 textColor666">{{ item.contact.name }} | {{ item.contact.postNameCn }}</span>
-        <v-chip color="primary" label size="x-small">当前在线</v-chip>
       </div>
     </div>
   </div>

+ 0 - 0
src/views/recruit/personal/position/components/dict.js → src/utils/position.js


+ 1 - 1
src/views/recruit/enterprise/enterpriseCenter/components/positions.vue

@@ -82,7 +82,7 @@ import { reactive, ref, provide } from 'vue'
 import { useRoute, useRouter } from 'vue-router'
 import { timesTampChange } from '@/utils/date'
 import { getDict } from '@/hooks/web/useDictionaries'
-import { dealDictObjData } from '@/views/recruit/personal/position/components/dict'
+import { dealDictObjData } from '@/utils/position'
 import { getJobAdvertisedPositionCount, getJobAreaByEnterpriseId, getJobAdvertisedSearch } from '@/api/position'
 import MPagination from '@/components/CtPagination'
 import expType from '@/views/recruit/personal/position/components/conditionFilter/expType.vue'

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

@@ -23,7 +23,7 @@ defineOptions({ name: 'screen-page'})
 import { ref, defineProps, defineEmits, watch } from 'vue'
 import { getJobAdvertised } from '@/api/enterprise'
 import { getDict } from '@/hooks/web/useDictionaries'
-import { dealDictArrayData } from '@/views/recruit/personal/position/components/dict'
+import { dealDictArrayData } from '@/utils/position'
 import CommonStyle from './commonStyle.vue'
 
 const emit = defineEmits(['search', 'reset'])

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

@@ -29,7 +29,7 @@ defineOptions({ name: 'enterprise-personnelManagement-management'})
 import { ref } from 'vue'
 import { getPersonCvPage } from '@/api/enterprise'
 import { getDict } from '@/hooks/web/useDictionaries'
-import { dealDictObjData } from '@/views/recruit/personal/position/components/dict'
+import { dealDictObjData } from '@/utils/position'
 import TablePage from './components/table.vue'
 import Screen from './components/screen.vue'
 

+ 1 - 1
src/views/recruit/enterprise/positionManagement/components/add.vue

@@ -27,7 +27,7 @@
 defineOptions({ name: 'enterprise-position-add'})
 import { ref } from 'vue'
 import { useRouter, useRoute } from 'vue-router'
-import { dealDictObjData } from '@/views/recruit/personal/position/components/dict'
+import { dealDictObjData } from '@/utils/position'
 import { saveJobAdvertised, getJobDetails } from '@/api/position'
 import baseInfo from './baseInfo.vue'
 import jobRequirements from './jobRequirements.vue'

+ 3 - 3
src/views/recruit/enterprise/positionManagement/components/details.vue

@@ -38,9 +38,9 @@
                   <div class="contact-info">{{ info.enterprise.name }} · {{ info.contact.postNameCn }}</div>
                 </div>
               </div>
-              <div class="float-right">
+              <!-- <div class="float-right">
                 <v-chip color="primary" label>{{ $t('position.currentOnline') }}</v-chip>
-              </div>
+              </div> -->
             </div>
             <v-divider class="my-3"></v-divider>
             <div>
@@ -76,7 +76,7 @@ import { ref } from 'vue'
 import { useRouter } from 'vue-router'
 import { timesTampChange } from '@/utils/date'
 import { getJobDetails } from '@/api/position'
-import { dealDictObjData } from '@/views/recruit/personal/position/components/dict'
+import { dealDictObjData } from '@/utils/position'
 
 const router = useRouter()
 const { id } = router.currentRoute.value.params

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

@@ -37,7 +37,7 @@ import TextUI from '@/components/FormUI/TextInput'
 import PositionItem from './components/item.vue'
 import { useRouter } from 'vue-router'
 import { getJobAdvertisedList } from '@/api/position'
-import { dealDictArrayData } from '@/views/recruit/personal/position/components/dict'
+import { dealDictArrayData } from '@/utils/position'
 import { useI18n } from '@/hooks/web/useI18n'
 
 const { t } = useI18n()

+ 34 - 28
src/views/recruit/enterprise/publicRecruitmentManagement/deliver/components/table.vue

@@ -1,9 +1,9 @@
 <template>
   <div>
-    <!-- <div class="text-end">
-      <v-btn v-if="tab === '0'" color="primary" :disabled="selected.length ? false : true" variant="tonal" @click="handleAction('all', 0)">不合适</v-btn>
-      <v-btn v-if="tab === '1'" color="primary" :disabled="selected.length ? false : true" variant="tonal" @click="handleAction('all', 1)">入职</v-btn>
-    </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>
+    </div>
     <v-data-table
       class="mt-3"
       v-model="selected"
@@ -29,13 +29,10 @@
         </div>
       </template>
       <template v-slot:item.actions="{ item }">
-        <!-- <div v-if="tab === '0'">
-          <v-btn color="primary" variant="text" @click="previewFile(item.url)">查看简历</v-btn>
-          <v-btn color="primary" variant="text" @click="handleAction('', 0, item)">不合适</v-btn>
-        </div>
-        <div v-if="tab === '1'">
-          <v-btn color="primary" variant="text" @click="handleAction('', 1, item)">入职</v-btn>
-        </div> -->
+        <v-btn v-if="tab === '0' && item.url" color="primary" variant="text" @click="previewFile(item.url)">查看简历</v-btn>
+        <v-btn v-if="tab === '2'" color="primary" variant="text" @click="handleAction('', 0, item)">不合适</v-btn>
+        <v-btn v-if="tab === '3'" 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>
       </template>
     </v-data-table>
   </div>
@@ -44,12 +41,13 @@
 <script setup>
 defineOptions({ name: 'table-page'})
 import { ref, computed } from 'vue'
-// import { previewFile } from '@/utils'
-// import { useI18n } from '@/hooks/web/useI18n'
-// import Snackbar from '@/plugins/snackbar'
+import { hireJobCvRelEntry, hireJobCvRelEliminate, hireJobCvRelSettlement } from '@/api/recruit/public/delivery'
+import { previewFile } from '@/utils'
+import { useI18n } from '@/hooks/web/useI18n'
+import Snackbar from '@/plugins/snackbar'
 
-// const { t } = useI18n()
-// const emit = defineEmits(['refresh'])
+const { t } = useI18n()
+const emit = defineEmits(['refresh'])
 defineProps({
   tab: String,
   items: Array
@@ -70,7 +68,7 @@ const headers = ref([
   { title: '工作经验', key: 'person.expName', sortable: false },
   { title: '最高学历', key: 'person.eduName', sortable: false },
   { title: '岗位薪资', key: 'job', value: item => `${item.job.payFrom}-${item.job.payTo}/${item.job.payName}`, sortable: false },
-  { title: '结果反馈', key: '' },
+  { title: '结果反馈', key: '', sortable: false },
   { title: '操作', value: 'actions' }
 ])
 
@@ -80,19 +78,27 @@ const handleToPersonDetail = ({ userId, id }) => {
   window.open(`/recruit/enterprise/talentPool/details/${userId}?id=${id}`)
 }
 
-// const apiList = [
-//   joinEliminate, // 不合适
-//   personEntryByEnterprise // 入职
-// ]
+const apiList = [
+  hireJobCvRelEliminate, // 不合适
+  hireJobCvRelEntry // 入职
+]
 
 // 不合适、入职
-// const handleAction = async (type, index, item) => {
-//   const ids = type ? selected.value : [item?.id]
-//   if (!ids) return
-//   await apiList[index](ids)
-//   Snackbar.success(t('common.operationSuccessful'))
-//   emit('refresh')
-// }
+const handleAction = async (type, index, item) => {
+  const ids = type ? selected.value : [item?.id]
+  if (!ids) return
+  await apiList[index](ids)
+  Snackbar.success(t('common.operationSuccessful'))
+  emit('refresh')
+}
+
+// 结算
+const handleSettlement = async (item) => {
+  if (!item.id) return
+  await hireJobCvRelSettlement(item.id)
+  Snackbar.success(t('common.operationSuccessful'))
+  emit('refresh')
+}
 </script>
 
 <style scoped lang="scss">

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

@@ -27,7 +27,7 @@ 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 '@/views/recruit/personal/position/components/dict'
+import { dealDictObjData } from '@/utils/position'
 import TablePage from './components/table.vue'
 
 const total = ref(0)

+ 1 - 1
src/views/recruit/enterprise/talentPool/components/details/baseInfo.vue

@@ -67,7 +67,7 @@
 defineOptions({name: 'enterprise-talentPool-details-baseInfo'})
 import { ref, defineProps } from 'vue'
 import { timesTampChange } from '@/utils/date'
-import { dealDictObjData } from '@/views/recruit/personal/position/components/dict'
+import { dealDictObjData } from '@/utils/position'
 
 const props = defineProps({
   data: Object

+ 1 - 1
src/views/recruit/personal/PersonalCenter/components/communication.vue

@@ -51,7 +51,7 @@
 // 沟通过
 defineOptions({ name: 'position-communication' })
 import { ref } from 'vue'
-// import { dealDictArrayData, dealDictObjData } from '@/views/recruit/personal/position/components/dict'
+// import { dealDictArrayData, dealDictObjData } from '@/utils/position'
 import Empty from '@/components/Empty'
 
 const props = defineProps({

+ 1 - 1
src/views/recruit/personal/PersonalCenter/components/companyCollection.vue

@@ -17,7 +17,7 @@
 // 感兴趣-公司收藏
 defineOptions({ name: 'company-collection' })
 import { ref } from 'vue'
-import { dealDictArrayData } from '@/views/recruit/personal/position/components/dict'
+import { dealDictArrayData } from '@/utils/position'
 import { getSubscribeEnterprise } from '@/api/position'
 
 const total = ref(0)

+ 1 - 1
src/views/recruit/personal/PersonalCenter/components/delivery.vue

@@ -17,7 +17,7 @@
 // 已投递
 defineOptions({ name: 'position-delivery' })
 import { ref } from 'vue'
-import { dealDictObjData } from '@/views/recruit/personal/position/components/dict'
+import { dealDictObjData } from '@/utils/position'
 import { getJobDeliveryList } from '@/api/position'
 
 const total = ref(0)

+ 1 - 1
src/views/recruit/personal/PersonalCenter/components/interestedMe.vue

@@ -53,7 +53,7 @@
 // 对我感兴趣
 defineOptions({ name: 'position-interested-in-me' })
 import { ref } from 'vue'
-// import { dealDictArrayData, dealDictObjData } from '@/views/recruit/personal/position/components/dict'
+// import { dealDictArrayData, dealDictObjData } from '@/utils/position'
 import Empty from '@/components/Empty'
 
 const props = defineProps({

+ 1 - 1
src/views/recruit/personal/PersonalCenter/components/positionCollection.vue

@@ -17,7 +17,7 @@
 // 感兴趣-职位收藏
 defineOptions({ name: 'position-collection' })
 import { ref } from 'vue'
-import { dealDictObjData } from '@/views/recruit/personal/position/components/dict'
+import { dealDictObjData } from '@/utils/position'
 import { getJobFavoriteList } from '@/api/position'
 
 const total = ref(0)

+ 1 - 1
src/views/recruit/personal/PersonalCenter/components/seenMe.vue

@@ -53,7 +53,7 @@
 // 看过我
 defineOptions({ name: 'position-seen-me' })
 import { ref } from 'vue'
-// import { dealDictArrayData, dealDictObjData } from '@/views/recruit/personal/position/components/dict'
+// import { dealDictArrayData, dealDictObjData } from '@/utils/position'
 import Empty from '@/components/Empty'
 
 const props = defineProps({

+ 1 - 1
src/views/recruit/personal/company/index.vue

@@ -28,7 +28,7 @@ defineOptions({name: 'retrieval-company-page'})
 import { ref } from 'vue'
 import { useRoute, useRouter } from 'vue-router'
 import { getEnterpriseSearch } from '@/api/enterprise'
-import { dealDictArrayData } from '../position/components/dict'
+import { dealDictArrayData } from '@/utils/position'
 import headSearch from '@/components/headSearch'
 import scaleType from './components/scaleType'
 import natureType from './components/natureType'

+ 1 - 1
src/views/recruit/personal/home/components/hotPromotedPositions.vue

@@ -26,7 +26,7 @@
 import PositionCard from '@/components/Position/item.vue'
 import { ref } from 'vue'
 import { getPromotedPosition, getLatestPosition, getHirePosition } from '@/api/position'
-import { dealDictArrayData } from '@/views/recruit/personal/position/components/dict'
+import { dealDictArrayData } from '@/utils/position'
 
 const tab = ref(1)
 const items = ref([])

+ 1 - 1
src/views/recruit/personal/home/components/popularEnterprises.vue

@@ -12,7 +12,7 @@ import HotPromoted from '@/components/Enterprise/hotPromoted.vue'
 import { ref, reactive } from 'vue'
 import { getHotEnterprise } from '@/api/enterprise'
 import { getDict } from '@/hooks/web/useDictionaries'
-import { dealDictArrayData } from '@/views/recruit/personal/position/components/dict'
+import { dealDictArrayData } from '@/utils/position'
 
 const items = ref([])
 const dictObj = reactive({

+ 3 - 3
src/views/recruit/personal/position/components/details.vue

@@ -54,9 +54,9 @@
                   <div class="contact-info">{{ info.enterprise.name }} · {{ info.contact.postNameCn }}</div>
                 </div>
               </div>
-              <div class="float-right">
+              <!-- <div class="float-right">
                 <v-chip color="primary" label>{{ $t('position.currentOnline') }}</v-chip>
-              </div>
+              </div> -->
             </div>
             <v-divider class="my-3"></v-divider>
             <div>
@@ -111,7 +111,7 @@ import { timesTampChange } from '@/utils/date'
 import { getPersonResumeCv } from '@/api/resume'
 import { useI18n } from '@/hooks/web/useI18n'
 import { getPositionDetails, getSimilarPosition, getJobFavoriteCheck, getPersonJobFavorite, getPersonJobUnfavorite, jobCvRelCheckSend, jobCvRelSend } from '@/api/position'
-import { dealDictObjData, dealDictArrayData } from '@/views/recruit/personal/position/components/dict'
+import { dealDictObjData, dealDictArrayData } from '@/utils/position'
 import similarPositions from '@/components/Position/similarPositions.vue'
 import EnterpriseInfo from '@/components/Enterprise/info.vue'
 import Snackbar from '@/plugins/snackbar'

+ 1 - 1
src/views/recruit/personal/position/components/rightRecommend.vue

@@ -17,7 +17,7 @@
 defineOptions({name: 'retrieval-components-recommendedPositions'})
 import { ref } from 'vue'
 import { getPromotedPosition } from '@/api/position'
-import { dealDictArrayData } from '@/views/recruit/personal/position/components/dict'
+import { dealDictArrayData } from '@/utils/position'
 
 const items = ref([])
 

+ 8 - 8
src/views/recruit/personal/position/index.vue

@@ -19,16 +19,16 @@
       <div class="mr-3" style="min-width: 850px;">
         <Empty v-if="!items?.length"></Empty>
         <PositionLongStrip v-else :items="items"></PositionLongStrip>
+        <CtPagination
+          v-if="total > 0"
+          :total="total"
+          :page="pageInfo.pageNo"
+          :limit="pageInfo.pageSize"
+          @handleChange="handleChangePage"
+        ></CtPagination>
       </div>
       <rightRecommend></rightRecommend>
     </div>
-    <CtPagination
-      v-if="total > 0"
-      :total="total"
-      :page="pageInfo.pageNo"
-      :limit="pageInfo.pageSize"
-      @handleChange="handleChangePage"
-    ></CtPagination>
   </div>
 </template>
 
@@ -42,7 +42,7 @@ import Empty from '@/components/Empty'
 import { getJobAdvertisedSearch } from '@/api/position'
 import CtPagination from '@/components/CtPagination'
 import { provide, reactive, ref } from 'vue'
-import { dealDictObjData } from '@/views/recruit/personal/position/components/dict'
+import { dealDictObjData } from '@/utils/position'
 
 import { useRoute, useRouter } from 'vue-router'
 defineOptions({name: 'retrieval-position-page'})