Quellcode durchsuchen

后台日报表功能

yanliming vor 1 Jahr
Ursprung
Commit
66030cc958

+ 11 - 0
src/api/statistical/report.js

@@ -0,0 +1,11 @@
+import request from '@/utils/request'
+import constant from '@/constant'
+
+function dailyReport(formData) {
+  return request.post(constant.serverUrl + "/statistical/report/dailyReport", formData);
+}
+
+
+export default {
+    dailyReport,
+}

+ 2 - 0
src/routers/index.js

@@ -4,6 +4,7 @@ import Layout from '@/views/layout'
 import Home from '@/views/Home.vue'
 import baseRouters from './modules/base'
 import sysRouters from './modules/sys'
+import statisticalRouters from './modules/statistical'
 import { Message } from 'element-ui'
 import NProgress from 'nprogress' // progress bar
 import 'nprogress/nprogress.css' // progress bar style
@@ -28,6 +29,7 @@ export const constantRoutes = [
         }
       },
       ...baseRouters,
+      ...statisticalRouters,
       ...sysRouters,
     ]
   },

+ 16 - 0
src/routers/modules/statistical.js

@@ -0,0 +1,16 @@
+var routers = [
+    {
+            path: '/statistical/dailyReport/list',
+            name: 'statisticalDailyReportList',
+            // route level code-splitting
+            // this generates a separate chunk (about.[hash].js) for this route
+            // which is lazy-loaded when the route is visited.
+            component: () => import('@/views/statistical/dailyReport-list.vue'),
+            meta: {
+                    roles: ["admin"],
+                    title: '统计日报表'
+            }
+    },
+]
+
+export default routers;

+ 219 - 0
src/views/statistical/dailyReport-list.vue

@@ -0,0 +1,219 @@
+<template>
+    <div>
+      <el-breadcrumb separator=">">
+        <el-breadcrumb-item :to="{ path: '/' }">首页</el-breadcrumb-item>
+        <el-breadcrumb-item>
+          <a href="#">统计报表</a>
+        </el-breadcrumb-item>
+        <el-breadcrumb-item>
+          <a href="/statistical/dailyReport-list">统计日报表</a>
+        </el-breadcrumb-item>
+      </el-breadcrumb>
+      <el-divider></el-divider>
+      <!--
+        要resetFields起作用,必须配置:model和prop
+      -->
+      <el-form ref="queryForm" :model="queryModel" inline class="demo-form-inline">
+        <el-form-item label="选择日期" prop="date">
+            <el-date-picker
+                size="mini"
+                v-model="queryModel.date"
+                type="date"
+                placeholder="选择日期"
+                value-format="yyyy-MM-dd"
+                format="yyyy-MM-dd">
+                </el-date-picker>
+            </el-form-item>
+        <el-form-item>
+          <el-button
+            type="primary"
+            size="mini"
+            icon="ios-search"
+            @click="changePage(1)"
+            :loading="loading"
+          >查询</el-button>&nbsp;
+          <el-button
+            type="info"
+            size="mini"
+            style="margin-left: 8px"
+            @click="handleReset('queryForm')"
+          >重置</el-button>&nbsp;
+        </el-form-item>
+      </el-form>
+      <el-divider></el-divider>
+      <el-table
+        :data="tableData"
+        v-loading="loading"
+        stripe
+        :header-cell-style="headClass"
+        @sort-change="sortChange"
+      >
+        <el-table-column  label="登录人数">
+            <el-table-column  prop="loginNum"  label="新增人数">
+            </el-table-column>
+            <el-table-column  prop="totalLoginNum"  label="累计人数">
+            </el-table-column>
+        </el-table-column>
+        <el-table-column   label="求职登记人数">
+            <el-table-column  prop="personNum"  label="新增人数">
+            </el-table-column>
+            <el-table-column  prop="totalPersonNum"  label="累计人数">
+            </el-table-column>
+        </el-table-column>
+        <el-table-column    label="认证企业数">
+            <el-table-column  prop="enterpriseNum"  label="新增线上登记">
+            </el-table-column>
+            <el-table-column  prop="totalEnterpriseNum"  label="累计企业数量">
+            </el-table-column>
+        </el-table-column>
+        <el-table-column   label="岗位数量">
+            <el-table-column  prop="recruitNum"  label="新增发布岗位数量">
+            </el-table-column>
+            <el-table-column  prop="totalRecruitNum"  label="实时发布岗位数">
+            </el-table-column>
+            <el-table-column  prop="totalRecruitStatusNum"  label="累计岗位发布数量">
+            </el-table-column>
+        </el-table-column>
+        <el-table-column  label="求职数">
+            <el-table-column  prop="jobInformationNum"  label="今日报名人数">
+            </el-table-column>
+        </el-table-column>
+      </el-table>
+    </div>
+  </template>
+  <script>
+  import reportApi from "@/api/statistical/report";
+  
+  export default {
+    name: 'statisticalDailyReportList',
+    data() {
+      var self = this;
+  
+      return {
+        queryModel: {
+            date: this.initCurDate(),
+        },
+        loading: false,
+        tableData: [],
+        pageIndex: 1,
+        pageSize: 10,
+        totalPages: 0,
+        totalElements: 0,
+        field: "",
+        direction: "",
+        pageSizeList: [10, 20, 30],
+        multipleSelection: [],
+        modalTitle: "",      
+        businessKey: "",
+        showModal: false,
+        dialogFormVisible:false,
+        newPassword:"",
+        roleResult:[],
+        props: {
+          // 配置项(必选)
+          value: "id",
+          label: "name",
+          children: "children"
+        },
+      };
+    },
+    methods: {
+        headClass(){
+            return "text-align: center;"
+        },
+        initCurDate(){
+            const now = new Date();
+            const year = now.getFullYear();
+            const month = ('0' + (now.getMonth() + 1)).slice(-2);
+            const day = ('0' + now.getDate()).slice(-2);
+            const formattedTime = year +"-"+ month +"-"+ day;
+            return formattedTime;
+        },
+        changePage(pageIndex) {
+            var self = this;
+    
+            console.log(pageIndex);
+    
+            self.pageIndex = pageIndex;
+            var formData = new FormData();
+    
+            formData.append("pageIndex", self.pageIndex);
+            formData.append("pageSize", self.pageSize);
+    
+            formData.append("date", self.queryModel.date);
+            
+    
+            self.loading = true;
+    
+            reportApi.dailyReport(formData).then(function(response) {
+            self.loading = false;
+    
+            var jsonData = response.data;
+    
+            if(jsonData.result){
+                var pageInfo = jsonData.data;
+    
+                //alert(JSON.stringify(pageInfo));
+                self.tableData = pageInfo
+            }
+            else {
+                self.$message({
+                    message: jsonData.message + "",
+                    type: "warning"
+                });
+            }
+            }).catch((error)=>{
+            self.loading = false;
+            });
+        },
+        pageSizeChange(pageSize) {
+            this.pageSize = pageSize;
+        },
+        sortChange(data) {
+            this.field = data.column.field;
+            this.direction = data.order == "ascending" ? "asc" : "desc";
+    
+            this.changePage(this.pageIndex);
+        },
+        handleSelectionChange(val) {
+            this.multipleSelection = val;
+        },
+        handleReset(name) {
+            this.$refs[name].resetFields();
+        },
+        onDetailModalClose(refreshed) {
+            this.showModal = false;
+    
+            if(refreshed) {
+            this.changePage(this.pageIndex);
+            }
+        },
+    },
+    mounted: function() {
+      var self = this;
+      this.changePage(1);
+    },
+    components: {
+    }
+  };
+  </script>
+  <style lang="scss" scoped>
+  .el-breadcrumb {
+    margin: 10px;
+    line-height: 20px;
+  }
+  
+  .el-divider {
+    margin: 5px 0;
+  }
+  
+  .demo-form-inline {
+    margin-left: 10px;
+    text-align: left;
+  }
+  
+  .button-group {
+    padding: 10px;
+    text-align: left;
+  }
+  </style>