|
@@ -1,5 +1,53 @@
|
|
|
<template>
|
|
|
<div>
|
|
|
+
|
|
|
+ <el-card style="margin-bottom:20px;">
|
|
|
+ <headers title="数据总览" :hidenOrgan="true" />
|
|
|
+ <div
|
|
|
+ class="wall"
|
|
|
+ style="height: 68px"
|
|
|
+ v-if="JSON.stringify(items) == '{}'"
|
|
|
+ >
|
|
|
+ 暂无数据
|
|
|
+ </div>
|
|
|
+ <!--
|
|
|
+ -->
|
|
|
+ <statistic :col="4" class="statistic" :cols="0">
|
|
|
+ <statistic-item v-for="(item, key) in items" :key="key" @click="active = key" :class="{ active: active === key }">
|
|
|
+ <span v-if="key!=='vipStudentRate'">
|
|
|
+ {{ item.title + "(人)" }}
|
|
|
+ <el-tooltip
|
|
|
+ v-if="item.desc"
|
|
|
+ :content="item.desc"
|
|
|
+ :open-delay="0.3"
|
|
|
+ placement="top"
|
|
|
+ >
|
|
|
+ <i
|
|
|
+ style="margin-left: 5px; cursor: pointer"
|
|
|
+ class="el-icon-warning-outline"
|
|
|
+ />
|
|
|
+ </el-tooltip>
|
|
|
+ </span>
|
|
|
+ <span v-else>
|
|
|
+ {{ item.title + "(%)" }}
|
|
|
+ <el-tooltip
|
|
|
+ v-if="item.desc"
|
|
|
+ :content="item.desc"
|
|
|
+ :open-delay="0.3"
|
|
|
+ placement="top"
|
|
|
+ >
|
|
|
+ <i
|
|
|
+ style="margin-left: 5px; cursor: pointer"
|
|
|
+ class="el-icon-warning-outline"
|
|
|
+ />
|
|
|
+ </el-tooltip>
|
|
|
+ </span>
|
|
|
+
|
|
|
+ <span> <count-to :endVal="item.percent || 0" /> </span>
|
|
|
+ </statistic-item>
|
|
|
+ </statistic>
|
|
|
+ </el-card>
|
|
|
+
|
|
|
<el-card>
|
|
|
<headers title="分部数据" @changeOrgan="changeOrgan" :special="true" />
|
|
|
<div class="tableWrap">
|
|
@@ -99,15 +147,21 @@
|
|
|
</div>
|
|
|
</template>
|
|
|
<script>
|
|
|
-import headers from "./modals/headers.vue";
|
|
|
+
|
|
|
import pagination from "@/components/Pagination/index";
|
|
|
import { getOrganMemberList } from "../api";
|
|
|
import { Export } from "@/utils/downLoadFile";
|
|
|
+import headers from "./modals/headers.vue";
|
|
|
+import countTo from "vue-count-to";
|
|
|
+import { descs, titles } from "../constant";
|
|
|
+import { getCloudStudyStudentOverView } from "../api";
|
|
|
import qs from "qs";
|
|
|
export default {
|
|
|
+ props: ["data"],
|
|
|
components: {
|
|
|
headers,
|
|
|
pagination,
|
|
|
+ countTo
|
|
|
},
|
|
|
data() {
|
|
|
return {
|
|
@@ -123,7 +177,9 @@ export default {
|
|
|
searchList: {
|
|
|
cloudStudyUseStudentDuty: "DESC",
|
|
|
},
|
|
|
- tenantId:''
|
|
|
+ tenantId:'',
|
|
|
+ dataList:{},
|
|
|
+ active:''
|
|
|
};
|
|
|
},
|
|
|
mounted() {
|
|
@@ -132,22 +188,31 @@ export default {
|
|
|
},
|
|
|
methods: {
|
|
|
async getList() {
|
|
|
+ /**
|
|
|
+ * try {
|
|
|
+ const res = await getCloudStudyStudentOverView();
|
|
|
+ this.dataList = res.data;
|
|
|
+ } catch (e) {
|
|
|
+ console.log(e);
|
|
|
+ }
|
|
|
+ */
|
|
|
try {
|
|
|
const arr = [36,39,41,42,43,44,45,46,47,48,49,50,52,54,56]
|
|
|
- const res = await getOrganMemberList({
|
|
|
+ const res = await getCloudStudyStudentOverView({
|
|
|
page: 1,
|
|
|
rows: 10,
|
|
|
...this.searchList,
|
|
|
organIds: this.organId,
|
|
|
});
|
|
|
this.tableList = []
|
|
|
- res.data.forEach(ele => {
|
|
|
- if(arr.indexOf (ele.organId) == -1){
|
|
|
- this.tableList.push(ele)
|
|
|
- }
|
|
|
- });
|
|
|
- // this.tableList = res.data.rows;
|
|
|
- // this.rules.total = res.data.total;
|
|
|
+ // res.data.forEach(ele => {
|
|
|
+ // if(arr.indexOf (ele.organId) == -1){
|
|
|
+ // this.tableList.push(ele)
|
|
|
+ // }
|
|
|
+ // });
|
|
|
+ this.tableList = res.data.list?.rows;
|
|
|
+ this.rules.total = res.data.list?.total;
|
|
|
+ this.dataList = res.data?.overView || {};
|
|
|
// console.log(this.tableList)
|
|
|
} catch (e) {
|
|
|
console.log(e);
|
|
@@ -197,6 +262,30 @@ export default {
|
|
|
});
|
|
|
},
|
|
|
},
|
|
|
+ computed: {
|
|
|
+ items() {
|
|
|
+ let obj = {};
|
|
|
+ // "eVipStudentNum",
|
|
|
+ let arr = [
|
|
|
+ "totalStudentNum",
|
|
|
+ "waitActivateVipStudentNum",
|
|
|
+ "effectiveVipStudentNum",
|
|
|
+ "vipStudentNum",
|
|
|
+ "cloudStudyLivelyStudentNum",
|
|
|
+ // "newCloudStudyStudentNum",
|
|
|
+ // "cloudStudyTodayUseStudentNum",
|
|
|
+ "effectiveStudentNum",
|
|
|
+ "vipStudentRate",
|
|
|
+ "cloudStudyUseStudentNum",
|
|
|
+ ];
|
|
|
+ arr.forEach((str) => {
|
|
|
+ if (this.dataList[str]+'') {
|
|
|
+ obj[str] ={title:titles[str],percent:this.dataList[str],desc:descs[str]};
|
|
|
+ }
|
|
|
+ });
|
|
|
+ return obj;
|
|
|
+ },
|
|
|
+ },
|
|
|
};
|
|
|
</script>
|
|
|
<style lang="scss" scoped>
|