|
|
@@ -0,0 +1,773 @@
|
|
|
+<template>
|
|
|
+ <div class="content-box">
|
|
|
+ <div class="left">
|
|
|
+ <div class="cameratxt">
|
|
|
+ 数据总览
|
|
|
+ <!-- <el-select
|
|
|
+ @change="collegeChange"
|
|
|
+ v-model="searchInput.college"
|
|
|
+ placeholder="请选择院系"
|
|
|
+ clearable
|
|
|
+ style="width: 250px; margin-left: 20px"
|
|
|
+ >
|
|
|
+ <el-option
|
|
|
+ v-for="i in collegeData"
|
|
|
+ :key="i.id"
|
|
|
+ :label="i.name"
|
|
|
+ :value="i.id"
|
|
|
+ />
|
|
|
+ </el-select> -->
|
|
|
+ <el-select
|
|
|
+ @change="yearChange"
|
|
|
+ clearable
|
|
|
+ v-model="searchInput.yearId"
|
|
|
+ placeholder="请选择年份"
|
|
|
+ style="width: 250px; margin-left: 20px"
|
|
|
+ v-if="store.BtnRole('dataOverview2')"
|
|
|
+ >
|
|
|
+ <el-option
|
|
|
+ v-for="i in yearData"
|
|
|
+ :key="i.id"
|
|
|
+ :label="i.name"
|
|
|
+ :value="i.id"
|
|
|
+ />
|
|
|
+ </el-select>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <div class="dashboard-wrap">
|
|
|
+ <!-- 循环渲染卡片 -->
|
|
|
+ <div class="stat-card" v-for="(item, idx) in cardList" :key="idx">
|
|
|
+ <!-- 左侧圆形图标 -->
|
|
|
+ <div class="icon-circle" :style="{ background: item.iconBg }">
|
|
|
+ <span class="icon">{{ item.iconText }}</span>
|
|
|
+ </div>
|
|
|
+ <!-- 右侧内容区 -->
|
|
|
+ <div class="card-content">
|
|
|
+ <div class="title">{{ item.title }}</div>
|
|
|
+ <div class="main-num">{{ item.mainValue }}</div>
|
|
|
+ <!-- 底部分两种:纯文字 / 进度条区域 -->
|
|
|
+ <template v-if="item.bottomType === 'text'">
|
|
|
+ <div class="bottom-text">
|
|
|
+ <span class="blue-text">{{ item.bottomTxt }}</span>
|
|
|
+ <span class="red-text">{{ item.bottomNum }}</span>
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+ <template v-else-if="item.bottomType === 'progress'">
|
|
|
+ <div
|
|
|
+ class="progress-group"
|
|
|
+ v-for="p in item.progressList"
|
|
|
+ :key="p.label"
|
|
|
+ >
|
|
|
+ <template v-if="idx != 3">
|
|
|
+ <div class="progress-label">{{ p.label }}</div>
|
|
|
+ <div class="progress-bar-track">
|
|
|
+ <div
|
|
|
+ class="progress-bar-fill"
|
|
|
+ :style="{ width: p.percent, background: p.barColor }"
|
|
|
+ ></div>
|
|
|
+ </div>
|
|
|
+ <span class="progress-rate">{{ p.percent }}</span>
|
|
|
+ </template>
|
|
|
+ <template v-else>
|
|
|
+ <div class="progress-bar-track progress-bar-track-baodao">
|
|
|
+ <div
|
|
|
+ class="progress-bar-fill"
|
|
|
+ :style="{ width: p.percent, background: p.barColor }"
|
|
|
+ ></div>
|
|
|
+ </div>
|
|
|
+ <span class="progress-rate progress-rate-baodao">{{
|
|
|
+ p.percent
|
|
|
+ }}</span>
|
|
|
+ </template>
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <!-- 学院新生报到 -->
|
|
|
+ <div class="echarts">
|
|
|
+ <div class="echarts_register">
|
|
|
+ <div class="system_title">
|
|
|
+ <h4>各学院现场报到统计</h4>
|
|
|
+ </div>
|
|
|
+ <Echart1 :yearId="searchInput.yearId"></Echart1>
|
|
|
+ </div>
|
|
|
+ <div class="echarts_traffic">
|
|
|
+ <div class="system_title">
|
|
|
+ <h4>新生报到层次统计</h4>
|
|
|
+ </div>
|
|
|
+ <Echart2 :yearId="searchInput.yearId"></Echart2>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <div class="echarts">
|
|
|
+ <div class="echarts_traffic">
|
|
|
+ <div class="system_title">
|
|
|
+ <h4>各学院住宿情况统计</h4>
|
|
|
+ </div>
|
|
|
+ <Echart3 :yearId="searchInput.yearId"></Echart3>
|
|
|
+ </div>
|
|
|
+ <div class="echarts_register">
|
|
|
+ <!-- 性别比例 -->
|
|
|
+ <div class="system_title">
|
|
|
+ <h4>学院新生性别统计</h4>
|
|
|
+ </div>
|
|
|
+ <Echart4 :yearId="searchInput.yearId"></Echart4>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+</template>
|
|
|
+
|
|
|
+<script setup>
|
|
|
+import {
|
|
|
+ ref,
|
|
|
+ watch,
|
|
|
+ reactive,
|
|
|
+ nextTick,
|
|
|
+ onMounted,
|
|
|
+ onBeforeMount,
|
|
|
+ onBeforeUnmount,
|
|
|
+ onUnmounted,
|
|
|
+} from "vue";
|
|
|
+import { useRouter } from "vue-router";
|
|
|
+import { ElMessage, ElMessageBox } from "element-plus";
|
|
|
+import { dayjs } from "element-plus";
|
|
|
+import { useTransition } from "@vueuse/core";
|
|
|
+import lodash from "lodash";
|
|
|
+import * as echarts from "echarts";
|
|
|
+import { https } from "@/utils/request"; // 绝对路径
|
|
|
+
|
|
|
+import { storeToRefs } from "pinia";
|
|
|
+import { useCounterStore } from "@/stores/index";
|
|
|
+import { right } from "@popperjs/core";
|
|
|
+
|
|
|
+import Echart1 from "./Echart1.vue";
|
|
|
+import Echart2 from "./Echart2.vue";
|
|
|
+import Echart3 from "./Echart3.vue";
|
|
|
+import Echart4 from "./Echart4.vue";
|
|
|
+
|
|
|
+const api = ref("");
|
|
|
+const router = useRouter();
|
|
|
+const store = useCounterStore();
|
|
|
+
|
|
|
+const tableData = reactive({
|
|
|
+ list: [],
|
|
|
+});
|
|
|
+const currentPage = ref(1); // 当前页
|
|
|
+const pageSize = ref(10);
|
|
|
+const total = ref(0); // 当前总数
|
|
|
+
|
|
|
+// 为避免解构时失去响应性
|
|
|
+const { name, age, isCollapse, realAge, collegeRole } = storeToRefs(store);
|
|
|
+
|
|
|
+const cardList = ref([]);
|
|
|
+
|
|
|
+const searchInput = reactive({
|
|
|
+ college: "",
|
|
|
+ yearId: "",
|
|
|
+});
|
|
|
+
|
|
|
+// 学院
|
|
|
+const collegeData = ref([]);
|
|
|
+const collegeList = async () => {
|
|
|
+ // collegeData.value = collegeRole.value;
|
|
|
+ let res = await https.get("/welcome/api/welcomeOrg/getColleges", "params");
|
|
|
+ console.log(res, "学院数据");
|
|
|
+ if (res.code == 200) {
|
|
|
+ collegeData.value = res.data;
|
|
|
+ } else {
|
|
|
+ ElMessage({
|
|
|
+ type: "error",
|
|
|
+ showClose: true,
|
|
|
+ message: res.message,
|
|
|
+ center: true,
|
|
|
+ });
|
|
|
+ }
|
|
|
+};
|
|
|
+
|
|
|
+const yearData = ref([]);
|
|
|
+const yearList = async () => {
|
|
|
+ let res = await https.get("/welcome/api/systemSetting/yearDatas", "params");
|
|
|
+ console.log(res, "年份数据");
|
|
|
+ if (res.code == 200) {
|
|
|
+ yearData.value = res.data;
|
|
|
+ } else {
|
|
|
+ ElMessage({
|
|
|
+ type: "error",
|
|
|
+ showClose: true,
|
|
|
+ message: res.message,
|
|
|
+ center: true,
|
|
|
+ });
|
|
|
+ }
|
|
|
+};
|
|
|
+
|
|
|
+// 处置情况
|
|
|
+const studentOverview = async () => {
|
|
|
+ let params = {
|
|
|
+ // accountId: sessionStorage.getItem("accountId"),
|
|
|
+ collegeId: searchInput.college,
|
|
|
+ yearId: searchInput.yearId,
|
|
|
+ };
|
|
|
+ let res = await https.get(
|
|
|
+ "/welcome/api/welcomeStudent/studentOverview",
|
|
|
+ "params",
|
|
|
+ params,
|
|
|
+ );
|
|
|
+ console.log(res, "顶部数据栏");
|
|
|
+ if (res.code == 200) {
|
|
|
+
|
|
|
+ cardList.value=[
|
|
|
+ {
|
|
|
+ title: "总录取人数",
|
|
|
+ iconText: "👥",
|
|
|
+ iconBg: "#eef4ff",
|
|
|
+ mainValue: res.data.enrollmentTotal,
|
|
|
+ bottomType: "text",
|
|
|
+ bottomTxt: res.data.yearStr,
|
|
|
+ textColorClass: "blue-text",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ title: "现场报到总人数/现场报到率",
|
|
|
+ iconText: "🗹",
|
|
|
+ iconBg: "#90caf9",
|
|
|
+ mainValue: `${res.data.registrationCount} / ${res.data.registrationRate}%`,
|
|
|
+ bottomType: "text",
|
|
|
+ bottomTxt: "剩余人数 ",
|
|
|
+ bottomNum: res.data.notRegistrationCount,
|
|
|
+ textColorClass: "red-text",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ title: "实时已缴费人数/缴费率",
|
|
|
+ iconText: "¥",
|
|
|
+ iconBg: "#e8f8ef",
|
|
|
+ mainValue: `${res.data.totalPayCount} / ${res.data.totalPayRate}%`,
|
|
|
+ bottomType: "progress",
|
|
|
+ progressList: [
|
|
|
+ { label: "全部缴费", percent: `${res.data.payRate}%`, barColor: "#1967e3" },
|
|
|
+ { label: "部分缴费", percent: `${res.data.portionPayRate}%`, barColor: "#ff982b" },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ title: "已缴费但未现场报到人数/占比",
|
|
|
+ iconText: "📊",
|
|
|
+ iconBg: "#eef4ff",
|
|
|
+ mainValue: `${res.data.payNotRegistrationCount} / ${res.data.payNotRegistrationRate}%`,
|
|
|
+ bottomType: "progress",
|
|
|
+ progressList: [{ label: "", percent: `${res.data.payNotRegistrationRate}%`, barColor: "#1967e3" }],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ title: "当天预约车辆情况统计",
|
|
|
+ iconText: "🕒",
|
|
|
+ iconBg: "#eef4ff",
|
|
|
+ mainValue: res.data.mvisitorTotal,
|
|
|
+ bottomType: "text",
|
|
|
+ bottomTxt: "当天剩余车位",
|
|
|
+ bottomNum: res.data.mcarTotal,
|
|
|
+ textColorClass: "red-text",
|
|
|
+ },
|
|
|
+ ];
|
|
|
+ } else {
|
|
|
+ ElMessage({
|
|
|
+ type: "error",
|
|
|
+ showClose: true,
|
|
|
+ message: res.message,
|
|
|
+ center: true,
|
|
|
+ });
|
|
|
+ }
|
|
|
+};
|
|
|
+
|
|
|
+const collegeChange = () => {
|
|
|
+ studentOverview();
|
|
|
+};
|
|
|
+const yearChange = () => {
|
|
|
+ studentOverview();
|
|
|
+};
|
|
|
+
|
|
|
+// 学生住宿情况
|
|
|
+const studentStay = async () => {
|
|
|
+ let params = {
|
|
|
+ // accountId: sessionStorage.getItem("accountId"),
|
|
|
+ collegeId: searchInput.college,
|
|
|
+ yearId: searchInput.yearId,
|
|
|
+ };
|
|
|
+ let res = await https.get(
|
|
|
+ "/welcome/api/welcomeStudent/studentStay",
|
|
|
+ "params",
|
|
|
+ params,
|
|
|
+ );
|
|
|
+ console.log(res, "学生住宿情况");
|
|
|
+ if (res.code == 200) {
|
|
|
+ tableData.list = res.data;
|
|
|
+ } else {
|
|
|
+ ElMessage({
|
|
|
+ type: "error",
|
|
|
+ showClose: true,
|
|
|
+ message: res.message,
|
|
|
+ center: true,
|
|
|
+ });
|
|
|
+ }
|
|
|
+};
|
|
|
+
|
|
|
+onMounted(() => {
|
|
|
+ studentOverview();
|
|
|
+ studentStay();
|
|
|
+ collegeList();
|
|
|
+ yearList();
|
|
|
+});
|
|
|
+
|
|
|
+onBeforeMount(() => {});
|
|
|
+onUnmounted(() => {});
|
|
|
+onBeforeUnmount(() => {});
|
|
|
+</script>
|
|
|
+
|
|
|
+<style scoped lang="scss">
|
|
|
+.content-box {
|
|
|
+ // min-width: calc(100% - 40px);
|
|
|
+ width: calc(100% - 40px);
|
|
|
+ height: calc(100% - 105px);
|
|
|
+ margin: 20px auto;
|
|
|
+ background-color: #ffffff;
|
|
|
+ color: #000;
|
|
|
+ display: flex;
|
|
|
+ flex-direction: column;
|
|
|
+ overflow: auto;
|
|
|
+ .left {
|
|
|
+ height: 60px;
|
|
|
+ margin: 0 30px;
|
|
|
+ border-bottom: 1px solid #ccc;
|
|
|
+ color: #000;
|
|
|
+ font-size: 18px;
|
|
|
+ font-weight: 600;
|
|
|
+
|
|
|
+ .cameratxt {
|
|
|
+ margin-right: 15px;
|
|
|
+ height: 60px;
|
|
|
+ line-height: 60px;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .system_title {
|
|
|
+ // width: 100%;
|
|
|
+ height: 45px;
|
|
|
+ opacity: 1;
|
|
|
+ border-radius: 0px 12px 0px 0px;
|
|
|
+ background: rgb(243, 249, 255);
|
|
|
+ margin: 15px 20px;
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ // justify-content: center;
|
|
|
+ h4 {
|
|
|
+ font-size: 15px;
|
|
|
+ padding: 0 5px 0 20px;
|
|
|
+ }
|
|
|
+ .wain {
|
|
|
+ font-size: 13px;
|
|
|
+ color: rgba(212, 48, 48, 1);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 处置情况
|
|
|
+ .dispose {
|
|
|
+ margin: 0 30px;
|
|
|
+ display: flex;
|
|
|
+ justify-content: space-between;
|
|
|
+ list-style: none;
|
|
|
+ padding: 0;
|
|
|
+ li {
|
|
|
+ // max-width: 385px;
|
|
|
+ min-width: 345px;
|
|
|
+ width: 24%;
|
|
|
+ // flex: 1;
|
|
|
+ // margin: 0 10px;
|
|
|
+ height: 133px;
|
|
|
+ border: 1px solid rgba(143, 143, 143, 1);
|
|
|
+ border-radius: 0.98px;
|
|
|
+ background: rgba(250, 252, 255, 1);
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ // justify-content: space-around;
|
|
|
+ .el-icon {
|
|
|
+ margin: 0 30px;
|
|
|
+ }
|
|
|
+ .dispose_content {
|
|
|
+ p {
|
|
|
+ margin: 5px 0 10px 0;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .yuyue {
|
|
|
+ span {
|
|
|
+ cursor: pointer;
|
|
|
+ }
|
|
|
+ .active {
|
|
|
+ color: rgb(248, 130, 11);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ .dashboard-wrap {
|
|
|
+ display: flex;
|
|
|
+ gap: 10px;
|
|
|
+ padding: 10px 20px;
|
|
|
+ flex-wrap: wrap;
|
|
|
+ // background: #ffffff;
|
|
|
+ .stat-card {
|
|
|
+ background: #fff;
|
|
|
+ border-radius: 14px;
|
|
|
+ padding: 22px 18px;
|
|
|
+ // min-width: 260px;
|
|
|
+ // flex: 1;
|
|
|
+ display: flex;
|
|
|
+ gap: 14px;
|
|
|
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
|
|
|
+ .icon-circle {
|
|
|
+ width: 58px;
|
|
|
+ height: 58px;
|
|
|
+ border-radius: 50%;
|
|
|
+ flex-shrink: 0;
|
|
|
+ display: grid;
|
|
|
+ place-items: center;
|
|
|
+ font-size: 24px;
|
|
|
+ }
|
|
|
+ .card-content {
|
|
|
+ flex: 1;
|
|
|
+ padding: 0 10px;
|
|
|
+ display: flex;
|
|
|
+ flex-direction: column;
|
|
|
+ // justify-content: space-between;
|
|
|
+ .title {
|
|
|
+ font-size: 16px;
|
|
|
+ color: #333;
|
|
|
+ margin-bottom: 8px;
|
|
|
+ line-height: 1.35;
|
|
|
+ }
|
|
|
+ .main-num {
|
|
|
+ font-size: 32px;
|
|
|
+ font-weight: 600;
|
|
|
+ color: #111;
|
|
|
+ // margin-bottom: 10px;
|
|
|
+ }
|
|
|
+ /* 底部普通文字样式 */
|
|
|
+ .bottom-text {
|
|
|
+ font-size: 14px;
|
|
|
+ margin-top: 20px;
|
|
|
+ display: flex;
|
|
|
+ justify-content: space-between;
|
|
|
+ align-items: center;
|
|
|
+ }
|
|
|
+ .blue-text {
|
|
|
+ color: #1967e3;
|
|
|
+ }
|
|
|
+ .red-text {
|
|
|
+ color: #d93025;
|
|
|
+ font-size: 18px;
|
|
|
+ font-weight: 600;
|
|
|
+ }
|
|
|
+ /* 进度条样式 */
|
|
|
+ .progress-group {
|
|
|
+ margin: 6px 0;
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ gap: 8px;
|
|
|
+ }
|
|
|
+ .progress-label {
|
|
|
+ width: 50px;
|
|
|
+ font-size: 12px;
|
|
|
+ color: #333;
|
|
|
+ flex-shrink: 0;
|
|
|
+ }
|
|
|
+ .progress-bar-track {
|
|
|
+ // flex: 1;
|
|
|
+ width: 150px;
|
|
|
+ height: 10px;
|
|
|
+ background: #e9ecef;
|
|
|
+ border-radius: 999px;
|
|
|
+ position: relative;
|
|
|
+ overflow: visible;
|
|
|
+ }
|
|
|
+ .progress-bar-track-baodao {
|
|
|
+ height: 15px;
|
|
|
+ }
|
|
|
+ .progress-bar-fill {
|
|
|
+ height: 100%;
|
|
|
+ border-radius: 999px;
|
|
|
+ }
|
|
|
+ .progress-rate {
|
|
|
+ // position: absolute;
|
|
|
+ right: -38px;
|
|
|
+ top: -3px;
|
|
|
+ font-size: 14px;
|
|
|
+ color: #d93025;
|
|
|
+ }
|
|
|
+ .progress-rate-baodao {
|
|
|
+ top: 0px !important;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 学院新生报到情况
|
|
|
+ .echarts {
|
|
|
+ display: flex;
|
|
|
+
|
|
|
+ // justify-content: space-around;
|
|
|
+ .echarts_register {
|
|
|
+ width: 50%;
|
|
|
+ position: relative;
|
|
|
+ #echarts_register {
|
|
|
+ width: calc(100% - 20px);
|
|
|
+ height: 300px;
|
|
|
+ margin: 0 auto;
|
|
|
+ }
|
|
|
+ .total {
|
|
|
+ display: inline-block;
|
|
|
+ position: relative;
|
|
|
+ top: 0;
|
|
|
+ left: 50px;
|
|
|
+ z-index: 999;
|
|
|
+ }
|
|
|
+ .chart-box {
|
|
|
+ width: calc(100% - 20px);
|
|
|
+ height: 300px;
|
|
|
+ position: relative;
|
|
|
+ }
|
|
|
+ .chart-header {
|
|
|
+ height: 30px;
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ justify-content: flex-end;
|
|
|
+ margin-right: 20px;
|
|
|
+ font-size: 13px;
|
|
|
+ color: #666;
|
|
|
+ font-weight: bold;
|
|
|
+ z-index: 10;
|
|
|
+ user-select: none;
|
|
|
+
|
|
|
+ span {
|
|
|
+ display: inline-block;
|
|
|
+ }
|
|
|
+ .col-rate {
|
|
|
+ width: 60px;
|
|
|
+ text-align: right;
|
|
|
+ }
|
|
|
+ .col-gap {
|
|
|
+ width: 16px;
|
|
|
+ }
|
|
|
+ .col-checked {
|
|
|
+ width: 66px;
|
|
|
+ text-align: right;
|
|
|
+ }
|
|
|
+ .col-slash {
|
|
|
+ width: 20px;
|
|
|
+ text-align: center;
|
|
|
+ }
|
|
|
+ .col-total {
|
|
|
+ width: 59px;
|
|
|
+ text-align: right;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ .echarts_traffic {
|
|
|
+ width: 50%;
|
|
|
+
|
|
|
+ #echarts_traffic {
|
|
|
+ width: calc(100% - 0px);
|
|
|
+ height: 300px;
|
|
|
+ margin: 0 auto;
|
|
|
+ }
|
|
|
+ .total {
|
|
|
+ display: inline-block;
|
|
|
+ position: relative;
|
|
|
+ top: 0;
|
|
|
+ left: 50px;
|
|
|
+ z-index: 999;
|
|
|
+ }
|
|
|
+ #echarts_levelRegister {
|
|
|
+ width: calc(100% - 0px);
|
|
|
+ height: 300px;
|
|
|
+ margin: 0 auto;
|
|
|
+ }
|
|
|
+ .chart-wrap {
|
|
|
+ position: relative;
|
|
|
+ // height: 300px;
|
|
|
+ }
|
|
|
+ .chart-inner {
|
|
|
+ width: 100%;
|
|
|
+ height: 330px;
|
|
|
+ }
|
|
|
+ .chart-header {
|
|
|
+ position: absolute;
|
|
|
+ top: 0px;
|
|
|
+ right: 20px;
|
|
|
+ display: flex;
|
|
|
+ gap: 10px;
|
|
|
+ font-size: 13px;
|
|
|
+ color: #666;
|
|
|
+ font-weight: bold;
|
|
|
+ z-index: 10;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ .gender {
|
|
|
+ width: calc(100% - 60px);
|
|
|
+ height: 300px;
|
|
|
+ margin: 0 auto 10px;
|
|
|
+ #gender {
|
|
|
+ width: 100%;
|
|
|
+ height: 300px;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ .footer {
|
|
|
+ width: 100%;
|
|
|
+ margin-bottom: 25px;
|
|
|
+ .el-table--fit {
|
|
|
+ width: calc(100% - 60px);
|
|
|
+ margin: 0 auto;
|
|
|
+ :deep(.el-table__header-wrapper) {
|
|
|
+ background-color: #000;
|
|
|
+ font-size: 15px;
|
|
|
+ color: #000;
|
|
|
+ .cell {
|
|
|
+ color: #000;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ :deep(.el-table__row) {
|
|
|
+ height: 50px;
|
|
|
+ font-size: 15px;
|
|
|
+ color: #000;
|
|
|
+ }
|
|
|
+ :deep(.el-table__row td) {
|
|
|
+ padding: 0;
|
|
|
+ border: 0;
|
|
|
+ }
|
|
|
+
|
|
|
+ .el-button--primary {
|
|
|
+ margin-left: 5px;
|
|
|
+ }
|
|
|
+ :deep(.el-table__body .even) {
|
|
|
+ background-color: #fff;
|
|
|
+ }
|
|
|
+ :deep(.el-table__body .odd) {
|
|
|
+ background-color: rgba(240, 243, 247, 1);
|
|
|
+ }
|
|
|
+ :deep(.options) {
|
|
|
+ display: flex;
|
|
|
+ justify-content: center;
|
|
|
+ align-items: center;
|
|
|
+ .edit {
|
|
|
+ margin: 0 15px 0 0;
|
|
|
+ color: rgba(0, 186, 173, 1);
|
|
|
+ cursor: pointer;
|
|
|
+ }
|
|
|
+ .delete {
|
|
|
+ color: rgba(212, 48, 48, 1);
|
|
|
+ cursor: pointer;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ .pageSize {
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ justify-content: space-between;
|
|
|
+ margin: 0 30px;
|
|
|
+ height: 60px;
|
|
|
+
|
|
|
+ span {
|
|
|
+ color: #000;
|
|
|
+ }
|
|
|
+
|
|
|
+ .el-pagination {
|
|
|
+ // width: 1600px;
|
|
|
+ :deep(.el-pagination__total) {
|
|
|
+ color: #000;
|
|
|
+ }
|
|
|
+
|
|
|
+ :deep(.el-pagination__goto) {
|
|
|
+ color: #000;
|
|
|
+ }
|
|
|
+
|
|
|
+ :deep(.el-pagination__classifier) {
|
|
|
+ color: #000;
|
|
|
+ }
|
|
|
+
|
|
|
+ :deep(.el-input__wrapper) {
|
|
|
+ border: 1px solid rgba(0, 0, 0, 1);
|
|
|
+ border-radius: 5px;
|
|
|
+ box-shadow: none;
|
|
|
+ }
|
|
|
+
|
|
|
+ :deep(.el-pager li) {
|
|
|
+ margin: 0 5px;
|
|
|
+ border: 1px solid rgba(0, 0, 0, 1);
|
|
|
+ border-radius: 5px;
|
|
|
+ background-color: transparent;
|
|
|
+ }
|
|
|
+
|
|
|
+ :deep(.el-pager li.is-active) {
|
|
|
+ // background-color: rgba(0, 97, 255, 0.8);
|
|
|
+ border: 1px solid rgba(0, 97, 255, 1);
|
|
|
+ color: rgba(0, 97, 255, 1);
|
|
|
+ }
|
|
|
+
|
|
|
+ :deep(.btn-prev) {
|
|
|
+ margin-right: 5px;
|
|
|
+ border: 1px solid rgba(0, 0, 0, 1);
|
|
|
+ border-radius: 5px;
|
|
|
+ background-color: transparent;
|
|
|
+ }
|
|
|
+
|
|
|
+ :deep(.btn-next) {
|
|
|
+ margin-left: 5px;
|
|
|
+ border: 1px solid rgba(0, 0, 0, 1);
|
|
|
+ border-radius: 5px;
|
|
|
+ background-color: transparent;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ @media (max-width: 1050px) {
|
|
|
+ .dispose {
|
|
|
+ flex-wrap: wrap;
|
|
|
+ li {
|
|
|
+ width: 98%;
|
|
|
+ margin: 10px 0 0;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ @media (min-width: 1051px) and (max-width: 1399px) {
|
|
|
+ .dispose {
|
|
|
+ flex-wrap: wrap;
|
|
|
+ li {
|
|
|
+ width: 49%;
|
|
|
+ margin: 10px 0 0;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ @media (min-width: 1400px) and (max-width: 1750px) {
|
|
|
+ // 处置情况
|
|
|
+ .dispose {
|
|
|
+ flex-wrap: wrap;
|
|
|
+ li {
|
|
|
+ width: 32%;
|
|
|
+ margin: 10px 0 0;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @media (max-width: 1650px) {
|
|
|
+ .echarts {
|
|
|
+ flex-wrap: wrap;
|
|
|
+ .echarts_register {
|
|
|
+ width: 98%;
|
|
|
+ }
|
|
|
+ .echarts_traffic {
|
|
|
+ width: 98%;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+</style>
|