Ver código fonte

分数段统计

la 2 anos atrás
pai
commit
8b0c448f1f
3 arquivos alterados com 326 adições e 0 exclusões
  1. 1 0
      package.json
  2. 19 0
      pnpm-lock.yaml
  3. 306 0
      src/pages/cjfx/cjfx_fsdtj.vue

+ 1 - 0
package.json

@@ -14,6 +14,7 @@
   },
   "dependencies": {
     "@vueuse/core": "^9.13.0",
+    "echarts": "^5.4.2",
     "element-plus": "^2.3.2",
     "pinia": "^2.0.34",
     "sass": "^1.62.0",

+ 19 - 0
pnpm-lock.yaml

@@ -10,6 +10,7 @@ specifiers:
   '@vue/test-utils': ^2.3.2
   '@vueuse/core': ^9.13.0
   axios: ^1.3.5
+  echarts: ^5.4.2
   element-plus: ^2.3.2
   eslint: ^8.37.0
   husky: ^8.0.0
@@ -35,6 +36,7 @@ specifiers:
 
 dependencies:
   '@vueuse/core': 9.13.0_vue@3.2.47
+  echarts: 5.4.2
   element-plus: 2.3.3_vue@3.2.47
   pinia: 2.0.34_dtjfskxukdxv24psui2m5c75zy
   sass: 1.62.0
@@ -2175,6 +2177,13 @@ packages:
     resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==}
     dev: true
 
+  /echarts/5.4.2:
+    resolution: {integrity: sha512-2W3vw3oI2tWJdyAz+b8DuWS0nfXtSDqlDmqgin/lfzbkB01cuMEN66KWBlmur3YMp5nEDEEt5s23pllnAzB4EA==}
+    dependencies:
+      tslib: 2.3.0
+      zrender: 5.4.3
+    dev: false
+
   /editorconfig/0.15.3:
     resolution: {integrity: sha512-M9wIMFx96vq0R4F+gRpY3o2exzb8hEj/n9S8unZtHSvYjibBp/iMufSzvmOcV/laG0ZtuTVGtiJggPOSW2r93g==}
     hasBin: true
@@ -5240,6 +5249,10 @@ packages:
     resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==}
     dev: true
 
+  /tslib/2.3.0:
+    resolution: {integrity: sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==}
+    dev: false
+
   /tslib/2.5.0:
     resolution: {integrity: sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==}
     dev: true
@@ -5967,3 +5980,9 @@ packages:
     resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==}
     engines: {node: '>=12.20'}
     dev: true
+
+  /zrender/5.4.3:
+    resolution: {integrity: sha512-DRUM4ZLnoaT0PBVvGBDO9oWIDBKFdAVieNWxWwK0niYzJCMwGchRk21/hsE+RKkIveH3XHCyvXcJDkgLVvfizQ==}
+    dependencies:
+      tslib: 2.3.0
+    dev: false

+ 306 - 0
src/pages/cjfx/cjfx_fsdtj.vue

@@ -0,0 +1,306 @@
+<template>
+  <div class="cjfxCjd">
+    <NavHeader />
+    <bread-crumb />
+
+    <div class="w-1200px m-auto flex flex-row justify-between">
+      <div class="w-188px">
+        <leftSider />
+      </div>
+
+      <div class="w-1012px p-4 blueBg">
+
+        <div class="flex items-center">
+          <el-select class="mr-10px" v-model="normal_subject" placeholder="请选择学科" size="large">
+            <el-option label="全部" value="0" />
+            <el-option v-for="item in subject_list" :key="item.value" :label="item.label" :value="item.value" />
+          </el-select>
+
+          <el-select class="mr-10px" v-model="normal_classroom" placeholder="请选择班级" size="large">
+            <el-option label="全部" value="0" />
+            <el-option v-for="item in classroom_list" :key="item.value" :label="item.label" :value="item.value" />
+          </el-select>
+
+          <el-select class="mr-10px" v-model="normal_school" placeholder="请选择学校" size="large">
+            <el-option label="全部" value="0" />
+            <el-option v-for="item in school_list" :key="item.value" :label="item.label" :value="item.value" />
+          </el-select>
+
+
+        </div>
+        <div class="flex justify-between mt-4 exportBtn">
+          <div>
+            <el-button color="#003eee" type="primary" size="large">导出</el-button>
+          </div>
+
+        </div>
+
+        <div class="h-200 mt-9px overflow-x-auto listMain" id="listMain"></div>
+
+        <div class="h-auto">
+           <div class="h-50px flex flex-wrap flex-grow justify-between rounded px-4 listMain_title">
+            <div class="singleT" v-for="(item,index) in listTitleShow" :key="index">{{item}}</div>
+          </div>
+
+          <div class="h-200px flex flex-wrap flex-grow justify-between px-4" v-for="(item,index) in listShow" :key="index">
+            <div class="singleTSec" >{{ item.xx }}</div>
+            <div class="singleTSec">{{ item.bj }}</div>
+            <div class="singleTSec">{{ item.pm }}</div>
+
+            <div class="singleTSec" >{{ item.pjf }}</div>
+            <div class="singleTSec">{{ item.ykrs }}</div>
+            <div class="singleTSec">{{ item.skrs }}</div>
+            <div class="singleTSec" >{{ item.zgf }}</div>
+            <div class="singleTSec">{{ item.yxrs }}</div>
+            <div class="singleTSec">{{ item.yxl}}</div>
+            <div class="singleTSec" >{{ item.jgrs }}</div>
+            <div class="singleTSec">{{ item.dfrs }}</div>
+            <div class="singleTSec">{{ item.dfl }}</div>
+            <div class="singleTSec" >{{ item.nd }}</div>
+            <div class="singleTSec">{{ item.qfd }}</div>
+            <div class="singleTSec">{{ item.bzc }}</div>
+
+          </div>
+        </div>
+
+      </div>
+
+
+
+
+    </div>
+
+    <commonFooter />
+  </div>
+</template>
+<route lang="json">
+{
+  "meta": {
+    "title": "成绩分析",
+    "breadcrumb": true
+  }
+}
+</route>
+<script lang="ts" setup>
+import * as echarts from 'echarts';
+
+import { useRouter } from "vue-router";
+const router = useRouter();
+
+let normal_subject = $ref("");
+let normal_classroom = $ref("");
+let normal_school = $ref("");
+let normal_teacher = $ref("");
+
+
+let subject_list = [{
+  value: '1',
+  label: '语文'
+}, {
+  value: '2',
+  label: '数学'
+}]
+
+let classroom_list = [{
+  value: '1',
+  label: '英语'
+}, {
+  value: '2',
+  label: '体育'
+}, {
+  value: '3',
+  label: '音乐'
+}
+];
+
+let school_list = [{
+  value: '1',
+  label: '学校1'
+}, {
+  value: '2',
+  label: '学校2'
+}]
+
+onMounted(() => {
+  initChart()
+})
+
+const initChart = () => {
+  var myChart = echarts.init(document.getElementById('listMain'));
+  myChart.setOption({
+    grid: {
+      left: '3%',
+      right: '4%',
+      bottom: '3%',
+      containLabel: true
+    },
+    xAxis: {
+      data: ['[0-10]', '[10-20]', '[20-30]', '[30-40]', '[40-50]', '[50-60]', '[60-70]']
+    },
+    yAxis: {
+      type: 'value',
+      axisTick: {
+        show: false
+      },
+    },
+    series: [
+      {
+        type: 'bar',
+        barWidth: '40',
+        itemStyle: {
+          normal: {
+            barBorderRadius: [20, 20, 0, 0],
+            color: '#6897FF',
+            label: {
+              show: true, //开启显示
+              position: 'top', //在上方显示
+              textStyle: { //数值样式
+                color: 'black',
+                fontSize: 16
+              }
+            }
+          }
+        },
+        data: [120,200,200,150,80,70,110,130],
+      }
+    ]
+  });
+}
+
+
+
+
+
+let listTitleShow = {
+  xx: "学校",
+  bj: "班级",
+  pm: "排名",
+  pjf: "平均分",
+  ykrs: "应考人数",
+  skrs: "实考人数",
+  zgf: "最高分",
+  yxrs: "优秀人数",
+  yxl: "优秀率",
+  jgrs: "及格人数",
+  jgl: "及格率",
+  dfrs: "低分人数",
+  dfl: "低分率",
+  nd: "难度",
+  qfd: "区分度",
+  bzc: "标椎差",
+}
+let listShow = [
+  {
+    xx: "总体",
+    bj: "初一(2)班",
+    pm: "1",
+    pjf: "87.45",
+    ykrs: "123",
+    skrs: "123",
+    zgf: "123",
+    yxrs: "98",
+    yxl: "89%",
+    jgrs: "98",
+    jgl: "89%",
+    dfrs: "23",
+    dfl: "90%",
+    nd: "0.92",
+    qfd: "0.92",
+    bzc: "87.45",
+
+  },
+  {
+    xx: "临沂市蒙阴县乡镇小学",
+    bj: "初一(2)班名",
+    pm: "1",
+    pjf: "87.45",
+    ykrs: "123",
+    skrs: "123",
+    zgf: "123",
+    yxrs: "98",
+    yxl: "89%",
+    jgrs: "98",
+    jgl: "89%",
+    dfrs: "23",
+    dfl: "90%",
+    nd: "0.92",
+    qfd: "0.92",
+    bzc: "87.45",
+  },
+
+]
+
+
+
+
+</script>
+
+
+<style lang="scss" scoped>
+::v-deep .el-sub-menu__title {
+  background: #003eee;
+  color: #fff;
+}
+
+::v-deep .el-table__header thead tr th {
+  background: #003eee !important;
+  color: #fff;
+  height: 50px;
+  line-height: 50px;
+  font-weight: normal;
+}
+
+::v-deep .el-table__header thead tr th:first-child {
+  border-top-left-radius: 9px;
+}
+
+::v-deep .el-table__body tbody .el-table__row td {
+  background-color: transparent;
+}
+
+::v-deep .el-dialog__footer {
+  text-align: center;
+}
+
+.blueBg {
+  background: #F1F7FF;
+}
+
+.whiteBG {
+  background: #fff;
+}
+
+.singlepart {
+  background-color: rgba($color: #ffffff, $alpha: 0.2);
+  color: #fff;
+}
+
+.listMain {
+  overflow-y: auto;
+}
+
+.listMain_title {
+  font-size: 14px;
+  color: #fff;
+  background: #003eee;
+  overflow-y: auto;
+}
+
+.singleT {
+  flex: 1;
+  line-height: 50px;
+  width: fit-content;
+  text-align: center;
+}
+
+.singleD {
+  flex: 1;
+}
+
+.singleTSec {
+  width: fit-content;
+  flex: 1;
+  line-height: 60px;
+  text-align: center;
+}
+</style>