فهرست منبع

整体分析-我联系的、主动联系我的

Xiao_123 9 ماه پیش
والد
کامیت
ad0c1c7f24

+ 8 - 0
src/api/recruit/enterprise/statistics/index.js

@@ -31,3 +31,11 @@ export const getJobCvSexCount = async (params) => {
     params
   })
 }
+
+// 联系我的和我联系的统计
+export const getRecentConversations = async (data) => {
+  return await request.post({
+    url: '/app-api/im/recent/conversations/statistics',
+    data
+  })
+}

+ 39 - 10
src/views/recruit/enterprise/statistics/components/overview.vue

@@ -10,10 +10,10 @@
             </template>
           </v-tooltip>
         </div>
-        <div class="overview-item-value my-3">{{ val.value }}</div>
+        <div class="overview-item-value my-3">{{ overviewData[val.key] }}</div>
         <div class="font-size-14">
           环比
-          <span class="color-error">0% ↑</span>
+          <span class="color-error">{{ typeof val.ratio === 'number' ? val.ratio : overviewData[val.ratio] }}% ↑</span>
         </div>
       </div>
     </div>
@@ -23,20 +23,41 @@
 
 <script setup>
 defineOptions({ name: 'overview-page'})
-import { ref, onMounted } from 'vue'
+import { ref, onMounted, watch } from 'vue'
 import * as echarts from 'echarts'
+import { getRecentConversations } from '@/api/recruit/enterprise/statistics'
 
+const props = defineProps({
+  query: Object
+})
+
+const overviewData = ref({
+  position: 0,
+  resume: 0,
+  viewResume: 0,
+  dealResume: 0,
+  interview: 0
+})
 // 数据概况
 const overview = ref([
-  { title: '职位浏览量', value: 86, desc: '指全部职位被候选人查看的人数总和' },
-  { title: '收到简历量', value: 12, desc: '指全部职位收到简历的总数' },
-  { title: '查看收到简历', value: 0, desc: '指查看候选人主动发送的简历数量' },
-  { title: '已处理简历', value: 4, desc: '指招聘方标记"通过筛选"与"不合适"的简历数' },
-  { title: '主动联系我的人', value: 0, desc: '指候选人主动发起沟通的人数' },
-  { title: '我主动联系的人', value: 5, desc: '指候选人主动发起沟通的人数' },
-  { title: '面试数量', value: 0, desc: '面试人数的总数' }
+  { title: '职位浏览量', key: 'position', ratio: 0, desc: '指全部职位被候选人查看的人数总和' },
+  { title: '收到简历量', key: 'resume', ratio: 0, desc: '指全部职位收到简历的总数' },
+  { title: '查看收到简历', key: 'viewResume', ratio: 0, desc: '指查看候选人主动发送的简历数量' },
+  { title: '已处理简历', key: 'dealResume', ratio: 0, desc: '指招聘方标记"通过筛选"与"不合适"的简历数' },
+  { title: '主动联系我的人', key: 'activeContactCount', ratio: 'qqactiveContactCount', desc: '指候选人主动发起沟通的人数' },
+  { title: '我主动联系的人', key: 'usContactCount', ratio: 'qqUsContactCount', desc: '指候选人主动发起沟通的人数' },
+  { title: '面试数量', key: 'interview', ratio: 0, desc: '面试人数的总数' }
 ])
 
+// 主动联系我的、我主动联系的人
+const accountInfo = localStorage.getItem('accountInfo') ? JSON.parse(localStorage.getItem('accountInfo')) : {}
+const getRecent = async () => {
+  if (!accountInfo || !accountInfo.userId) return
+  const data = await getRecentConversations({ userId: accountInfo.userId, ...props.query })
+  overviewData.value = Object.assign(overviewData.value, data)
+}
+getRecent()
+
 onMounted(() => {
   var chartDom = document.getElementById('myChart')
   var myChart = echarts.init(chartDom)
@@ -130,6 +151,14 @@ onMounted(() => {
   }
   option && myChart.setOption(option)
 })
+
+watch(
+  () => props.query,
+  (val) => {
+    if (val) getRecent()
+  },
+  { deep: true }
+)
 </script>
 
 <style scoped lang="scss">

+ 1 - 1
src/views/recruit/enterprise/statistics/overallAnalysis.vue

@@ -18,7 +18,7 @@
       <v-tabs v-model="tab" align-tabs="start" color="primary" bg-color="#f7f8fa">
         <v-tab :value="1">招聘进展</v-tab>
       </v-tabs>
-      <Overview class="mt-5"></Overview>
+      <Overview class="mt-5" :query="query"></Overview>
     </div>
     <div class="my-10">
       <v-tabs class="mb-5" v-model="tab" align-tabs="start" color="primary" bg-color="#f7f8fa">