ソースを参照

数据选择时间修改

lifanagju_citu 6 ヶ月 前
コミット
571c4abb79

+ 4 - 4
.env.local

@@ -4,15 +4,15 @@ NODE_ENV=development
 VITE_DEV=true
 
 # 请求路径
-VITE_BASE_URL='https://www.menduner.com:1443/' # 生产环境
-# VITE_BASE_URL='http://192.168.3.80' # 测试环境
+# VITE_BASE_URL='https://www.menduner.com:1443/' # 生产环境
+VITE_BASE_URL='http://192.168.3.80' # 测试环境
 
 # 文件上传类型:server - 后端上传, client - 前端直连上传,仅支持 S3 服务
 VITE_UPLOAD_TYPE=server
 
 # 上传路径
-VITE_UPLOAD_URL='https://www.menduner.com:1443/admin-api/infra/file/upload' # 生产环境
-# VITE_UPLOAD_URL='http://192.168.3.80/admin-api/infra/file/upload' # 测试环境
+# VITE_UPLOAD_URL='https://www.menduner.com:1443/admin-api/infra/file/upload' # 生产环境
+VITE_UPLOAD_URL='http://192.168.3.80/admin-api/infra/file/upload' # 测试环境
 
 # 接口地址
 VITE_API_URL=/admin-api

+ 95 - 7
src/views/Home/Index.vue

@@ -8,12 +8,15 @@
       :inline="true"
     >
       <el-form-item label="" prop="type">
-        <el-radio-group v-model="queryParams.type" @change="typeChange" class="!w-300px">
+        <el-radio-group v-model="queryParams.type" @change="typeChange" class="!w-390px">
           <!-- <el-radio-button label="全部" value="-1" /> -->
-          <el-radio-button label="每天" value="3" />
-          <el-radio-button label="每周" value="0" />
-          <el-radio-button label="每月" value="4" />
-          <el-radio-button label="每年" value="5" />
+          <el-radio-button label="24小时内" value="3" />
+          <el-radio-button label="7天内" value="0" />
+          <!-- <el-radio-button label="上个月" value="1" /> -->
+          <el-radio-button label="30天内" value="4" />
+          <el-radio-button label="3个月内" value="6" />
+          <!-- <el-radio-button label="上个季度" value="2" /> -->
+          <el-radio-button label="1年内" value="5" />
         </el-radio-group>
       </el-form-item>
       <el-form-item label="" prop="time">
@@ -35,7 +38,29 @@
       </el-form-item>
     </el-form>
   </ContentWrap>
-
+  <!-- 统计 -->
+  <div>
+    <CardTitle title="招聘进展"  style="margin-left: 5px;"/>
+    <!-- <div style="text-align: end;">
+      <el-button type="success" plain @click="handleExport" :loading="exportLoading">
+        <Icon icon="ep:download" class="mr-5px" /> 明细导出
+      </el-button>
+    </div> -->
+    <el-row :gutter="16" class="row" style="margin-top: 10px;">
+      <el-col v-for="item in statisticList" :key="item.name" :md="4" :sm="12" :xs="24" :loading="loading">
+        <ComparisonCard
+          :title="item.title"
+          :value="statistic[item.name]"
+          style="cursor: pointer;"
+        />
+      </el-col>
+    </el-row>
+  </div>
+  <!-- 图表 -->
+   
+  <div style="margin-top: 15px;">
+    <CardTitle title="数量统计" style="margin-left: 5px; margin-top: 20px;"/>
+  </div>
   <el-row class="mt-8px" :gutter="10" justify="space-between">
     <el-col :xl="12" :lg="12" :md="24" :sm="24" :xs="24" class="mb-8px" v-for="(val, index) in list" :key="index">
       <el-skeleton :loading="val.loading" animated>
@@ -58,6 +83,8 @@
 defineOptions({ name: 'Home' })
 import { cloneDeep } from 'lodash-es'
 import { getNewResumeNum, getNewRegisterUserNum, getNewRegisterEnterpriseNum, getNewEnterpriseUserNum } from '@/api/home'
+import { statisticAnalysisApi } from '@/api/menduner/system/analysis/statisticAnalysis'
+import ComparisonCard from '@/views/menduner/system/analysis/statisticAnalysis/components/ComparisonCard.vue'
 
 const queryFormRef = ref()
 const queryParams = reactive({
@@ -166,7 +193,7 @@ async function fetchAllData() {
     list.value.forEach(item => item.loading = false)
   }
 }
-fetchAllData()
+// fetchAllData()
 
 /** 类型选择操作 */
 const typeChange = (value) => {
@@ -179,10 +206,71 @@ const timeRangeChange = (value) => {
   else queryParams.type = '0'
 }
 
+const loading = ref(true) // 加载中
+/** 初始化 **/
+onMounted(async () => {
+  loading.value = true
+})
+
+// 统计
+const statisticList = [
+  { title: '发布职位数量', name: 'pushNum' },
+  { title: '职位浏览量', name: 'pageViews' },
+  { title: '收到的简历', name: 'resumeReceived' },
+  { title: '已查看简历', name: 'resumeViewed' },
+  { title: '已邀面试', name: 'invitedInterviews' },
+  { title: '面试完成', name: 'invitedCompleted' },
+]
+
+// 统计
+const statistic = reactive({
+  pageViews: 0,
+  pushNum: 0,
+  resumeReceived: 0,
+  resumeViewed: 0,
+  invitedInterviews: 0,
+  invitedCompleted: 0,
+})
+
+const apiArr = reactive({
+  // 统计
+  pageViewsTotal: statisticAnalysisApi.getAnalysisJobBrowseNum, // 职位浏览量-总数据
+  pageViews: statisticAnalysisApi.getAnalysisJobBrowseNumPage, // 职位浏览量-钻取
+  resumeReceived: statisticAnalysisApi.getAnalysisJobCvNewPage, // 钻取
+  pushNum: statisticAnalysisApi.getAnalysisJobNumPage, // 钻取
+  resumeViewed: statisticAnalysisApi.getAnalysisJobCvLookPage, // 钻取
+  invitedInterviews: statisticAnalysisApi.getAnalysisInterviewWaitPage, // 钻取
+  invitedCompleted: statisticAnalysisApi.getAnalysisInterviewCompletePage, // 钻取
+  // 分布
+  // sexDistributionData: statisticAnalysisApi.getAnalysisJobCvSexCount,
+  // ageDistributionData: statisticAnalysisApi.getAnalysisJobCvAgeCount,
+  // workExperienceData: statisticAnalysisApi.getAnalysisJobCvExpCount,
+  // educationData: statisticAnalysisApi.getAnalysisJobCvEduCount,
+})
+
+const getList = async (typeName) => {
+  loading.value = true
+  try {
+    // 职位浏览量-总数据
+    const res = await apiArr.pageViewsTotal(queryParams)
+    const data = { total: res || 0 }
+    statistic[typeName] = data.total || 0
+  } finally {
+    loading.value = false
+    dialogLoading.value = false
+  }
+}
+
 /** 搜索按钮操作 */
 const handleQuery = async () => {
+  if (Object.keys(statistic).length) { // 招聘进展
+    Object.keys(statistic).forEach(name => {
+      getList(name)
+    })
+  }
   fetchAllData()
 }
+handleQuery() // 默认展示数据
 
 /** 重置按钮操作 */
 const resetQuery = () => {

+ 8 - 4
src/views/menduner/system/analysis/statisticAnalysis/index.vue

@@ -76,11 +76,15 @@
           </el-form-item>
         </div>
         <el-form-item label="" prop="type">
-          <el-radio-group v-model="queryParams.type" @change="typeChange" class="!w-300px">
+          <el-radio-group v-model="queryParams.type" @change="typeChange" class="!w-360px">
             <el-radio-button label="全部" value="-1" />
-            <el-radio-button label="最近七天" value="0" />
-            <el-radio-button label="上个月" value="1" />
-            <el-radio-button label="上季度" value="2" />
+          <!-- <el-radio-button label="24小时内" value="3" /> -->
+          <el-radio-button label="7天内" value="0" />
+          <!-- <el-radio-button label="上个月" value="1" /> -->
+          <el-radio-button label="30天内" value="4" />
+          <el-radio-button label="3个月内" value="6" />
+          <!-- <el-radio-button label="上个季度" value="2" /> -->
+          <el-radio-button label="1年内" value="5" />
           </el-radio-group>
         </el-form-item>
         <el-form-item label="" prop="time">