Explorar o código

option组件化

la %!s(int64=2) %!d(string=hai) anos
pai
achega
6ef2134afc

+ 1 - 0
components.d.ts

@@ -44,6 +44,7 @@ declare module '@vue/runtime-core' {
     LeftSider: typeof import('./src/components/leftSider/index.vue')['default']
     LeftSiderStu: typeof import('./src/components/leftSiderStu/index.vue')['default']
     NavHeader: typeof import('./src/components/NavHeader/index.vue')['default']
+    OptionSelect: typeof import('./src/components/optionSelect/index.vue')['default']
     RouterLink: typeof import('vue-router')['RouterLink']
     RouterView: typeof import('vue-router')['RouterView']
     StatisticsSchool: typeof import('./src/components/statisticsSchool/index.vue')['default']

+ 0 - 1
src/components/leftSider/index.vue

@@ -54,7 +54,6 @@ const selectMenu = (key: string, keyPath: string[]) => {
     case '1-1'://成绩单
       router.push(
         { name: 'ksfx-cjfx_cjd-ykj_id', params: { ykj_id: props.ykjId } }
-        // 'cjfx_cjd'
       )
       break;
     case '1-2'://三率一分

+ 91 - 0
src/components/optionSelect/index.vue

@@ -0,0 +1,91 @@
+<template>
+  <div class="mainBase">
+
+    <el-select class="mr-10px" v-model="normal_school" placeholder="请选择学校" size="large" @change="(name)=>{ handelOption(name,'scholl')}">
+      <el-option label="全部" value="0" />
+      <el-option v-for="item in school_list" :key="item.value" :label="item.label" :value="item.value"  />
+    </el-select>
+
+    <el-select class="mr-10px" v-model="normal_classroom" placeholder="请选择班级" size="large" @change="(name)=>{ handelOption(name,'grade')}">
+      <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_subject" placeholder="请选择学科" size="large"  @change="(name)=>{ handelOption(name,'subject')} " >
+      <el-option label="全部" value="0" />
+      <el-option v-for="item in subject_list" :key="item.value" :label="item.label" :value="item.value" />
+    </el-select>
+
+  </div>
+</template>
+
+<script setup lang="ts">
+import {ksjh_detail } from '@/pages/ksfx/apiItem';
+import { defineProps,defineEmits } from 'vue';
+const props = defineProps(['normal_school','normal_subject','normal_classroom','school_list','classroom_list','subject_list']);
+const emit = defineEmits(['optionClick'])
+const route = useRoute();
+
+
+let normal_school =ref();
+let normal_subject = ref();
+let normal_classroom = ref();
+
+let school_list = ref([]);
+let classroom_list =ref([]) ;
+let subject_list = ref([]);
+
+let schoolAndClass = ref([]);
+
+onMounted(() => {
+  initOption();
+})
+
+// 初始化选项列表
+const initOption = () => {
+  let transObj = {
+    ykj_id:route.params.ykj_id,
+  }
+
+  ksjh_detail(transObj)
+    .then(res => {
+      if (res.code == "1") {
+        //初始化联考学校
+        let linkao_scholl = res.data.one_info.ykj_lkxx_ex;
+        let temp_school: { value: any; label: any; }[] = [];
+        linkao_scholl.forEach((item: { sm_id: any; sm_name: any; }) => {
+          temp_school.push({
+            value: item.sm_id,
+            label: item.sm_name
+          })
+        });
+        school_list.value = temp_school;
+
+        //
+        schoolAndClass.value = res.data.one_info.school_and_class;
+        //联考下的学科-从lc下取值
+        let allLc = res.data.one_info.lc;
+        let temp_xueke: { value: any; label: any; }[] = [];
+        allLc.forEach((item: { ze_id: any; ykl_lc: string; }) => {
+          temp_xueke.push({
+            value: item.ze_id,
+            label: JSON.parse(item.ykl_lc).ze_xueke_name
+          })
+        })
+        subject_list.value = temp_xueke;
+
+      }
+    })
+    .catch(error => { console.log(error) })
+}
+
+// 筛选点击
+const handelOption = (value,marke) => {
+  emit('optionClick', value,marke);
+}
+
+</script>
+
+<style scoped>
+
+</style>

+ 0 - 81
src/components/statisticsSchool/index.vue

@@ -1,81 +0,0 @@
-<template>
-  <div class="mainBase">
-    <el-select class="mr-10px" v-model="props.normal_school" placeholder="请选择学校" size="large" @change="handelSchool">
-      <el-option label="全部" value="0" />
-      <el-option v-for="item in props.school_list" :key="item.value" :label="item.label" :value="item.value"  />
-    </el-select>
-  </div>
-</template>
-
-<script setup lang="ts">
-import {normalSchool_list } from '@/pages/api';
-import { useRouter } from "vue-router";
-const router = useRouter();
-import { defineProps,defineEmits } from 'vue';
-const props = defineProps(['normal_school','school_list']);
-// const emit = defineEmits(['parentClick'])
-
-
-let normal_school = ref("");
-
-let school_list = ref([{
-  value: '1',
-  label: '学校1'
-}, {
-  value: '2',
-  label: '学校2'
-}]);
-
-onMounted(() => {
-  // initSchool();
-})
-
-//初始化学校
-const initSchool = () => {
-  let transObj = {
-    ze_id:1015//考试ID
-  }
-  normalSchool_list(transObj)
-    .then(res => {
-      if (res.code == "1") {
-        // let allData = res.data.list;
-        //接口模拟数据
-        let allData = [
-          {
-            sm_id: "267",
-            sm_name: "博智测试学校",
-            classes: [
-              {
-                cm_id: "8683",
-                cm_name: "高一(25)班"
-              }
-            ]
-          }
-        ]
-        let tempArr = [];
-        allData.forEach(item => {
-          tempArr.push({
-            value: item.sm_name,
-            label: item.sm_id
-          })
-          school_list.value = tempArr;
-        })
-
-        console.log(res, "00");
-      }
-    })
-    .catch(error => { console.log(error) });
-}
-
-
-const handelSchool = (item) => {
-  let tempIn = allData.value.filter(item => item.sm_id == item);
-  // classroom_list.value=
-  console.log(item);
-}
-
-</script>
-
-<style scoped>
-
-</style>

+ 25 - 76
src/pages/ksfx/cjfx_cjd/[ykj_id].vue

@@ -12,22 +12,7 @@
 
         <div class="flex items-center">
 
-          <!-- <statisticsSchool :normal_school="normal_school" :school_list="school_list" /> -->
-
-          <el-select class="mr-10px" v-model="normal_school" placeholder="请选择学校" size="large" @change="handelSchool">
-            <el-option label="全部" value="0" />
-            <el-option v-for="item in school_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_subject" placeholder="请选择学科" size="large" @change="handelSubject">
-            <el-option label="全部" value="0" />
-            <el-option v-for="item in subject_list" :key="item.value" :label="item.label" :value="item.value" />
-          </el-select>
+          <optionSelect  @optionClick="optionClick" />
 
         </div>
         <div class="mt-4 exportBtn">
@@ -104,33 +89,22 @@
 </route>
 <script lang="ts" setup>
 import {ksjh_detail,cjfx_cjd_list } from '../apiItem';
-import { useRouter } from "vue-router";
-const router = useRouter();
+import {user} from "~/store";
 const route = useRoute();
 
-let allData = ref("");
-let normal_subject = $ref("");
+let normal_school = ref();
+let normal_subject = ref();
+let normal_classroom = ref();
 
-let normal_classroom = $ref("");
-let normal_school = $ref("");
 
+let school_list = ref([]);
 
-let school_list = ref([{
-  value: '1',
-  label: '学校1'
-}]);
+let classroom_list =ref([]) ;
+let subject_list = ref([]);
+let schoolAndClass = ref([]);
 
-let classroom_list =ref([{
-  value: '1',
-  label: '初一(1)班'
-}]) ;
 
-let subject_list = ref([{
-  value: '1',
-  label: '语文'
-}]);
 
-let schoolAndClass = ref([]);
 
 // 侧边栏点击
 const activeIndex = ref('1-1');
@@ -235,7 +209,7 @@ const xueke_id = ref("");
 const initData =() => {
   let transObj = {
     school_id:school_id.value,
-    grade_id: grade_id.value,
+    cm_id: grade_id.value,
     xueke_id: xueke_id.value,
     jh_id:route.params.ykj_id,//考试计划id
   }
@@ -250,49 +224,24 @@ const initData =() => {
   .catch(error=>{console.log(error)})
 }
 
-
-const exportBtn = () => {
-  console.log("导出");
-}
-
-//点击学校筛选
-const handelSchool = (item) => {
-  school_id.value = item;
+//option筛选
+const optionClick = (val: any, marke: any) => {
+  if (marke == "scholl") {
+    school_id.value = val;
+  } else if (marke == "grade") {
+    grade_id.value = val;
+  } else {
+    xueke_id.value = val;
+  }
   initData();
-  //这里的联动缺失
-  //..................
-  let aa = [
-    {
-      sm_id: "267",
-      sm_name: "aaa",
-      classes: [
-        {
-          cm_id: "8765",
-          cm_name:"bbbbb"
-        }
-      ]
-    }
-  ]
-  aa.forEach(element => {
-    let temp_classes: { value: string; label: string; }[] = [];
-    if (element.sm_id == item) {
-      element.classes.forEach(i => {
-        temp_classes.push({
-          value: i.cm_id,
-          label: i.cm_name
-        })
-      })
-    }
-    classroom_list.value = temp_classes;
-  })
-
+  console.log(val,marke,"98789");
 }
-//点击班级筛选
 
-//点击学科筛选
-const handelSubject=(item)=>{
-  xueke_id.value = item;
-  initData();
+//导出
+const exportBtn = () => {
+  let prefixedUrl = window.GLOBAL_CONFIG.web_pc;
+  let fullUrl = prefixedUrl + '/openapi/echart/transcript.php?api=xls&token=' + user.value.token;
+  window.open(fullUrl,'_blank')
 }
 </script>
 

+ 29 - 37
src/pages/ksfx/cjfx_fsdtj/[ykj_id].vue

@@ -11,25 +11,13 @@
       <div class="w-1012px p-4 blueBg">
 
         <div class="flex items-center">
-          <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>
 
-          <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_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>
+          <optionSelect  @optionClick="optionClick" />
 
         </div>
         <div class="flex justify-between mt-4 exportBtn">
           <div>
-            <el-button color="#003eee" type="primary" size="large">导出</el-button>
+            <el-button color="#003eee" type="primary" size="large" @click="exportBtn">导出</el-button>
           </div>
 
         </div>
@@ -68,6 +56,7 @@ import * as echarts from 'echarts';
 import { useRouter } from "vue-router";
 const router = useRouter();
 const route = useRoute();
+import { user } from "~/store";
 
 let normal_subject = $ref("");
 let normal_classroom = $ref("");
@@ -76,29 +65,16 @@ let normal_school = $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'
 }]
 
 
@@ -109,10 +85,6 @@ const parentClick = (val) => {
   ykjId.value = route.params.ykj_id;
 }
 
-let echartData = {
-  xAxis_data: ['[0-10]', '[10-20]', '[20-30]', '[30-40]', '[40-50]', '[50-60]', '[60-70]'],
-  series_data:[120,200,200,150,80,70,110,130]
-}
 
 let classArr = ref([
   "初一(1)班",
@@ -151,11 +123,15 @@ onMounted(() => {
   initData();
 })
 
+const school_id = ref("");
+const grade_id = ref("");
+const xueke_id = ref("");
 const initData =() => {
   let transObj = {
-    xueke_id: '',
-    grade_id: '',
-    school_id: ''
+    school_id:school_id.value,
+    cm_id: grade_id.value,
+    xueke_id: xueke_id.value,
+    jh_id:route.params.ykj_id
   }
   cjfx_fsdtj_list(transObj)
     .then(res => {
@@ -168,6 +144,18 @@ const initData =() => {
   .catch(error=>{console.log(error)})
 }
 
+//option筛选
+const optionClick = (val: any, marke: any) => {
+  if (marke == "scholl") {
+    school_id.value = val;
+  } else if (marke == "grade") {
+    grade_id.value = val;
+  } else {
+    xueke_id.value = val;
+  }
+  initData();
+}
+
 const initChart = (item) => {
   var myChart = echarts.init(document.getElementById('echartData'));
   myChart.setOption({
@@ -213,8 +201,12 @@ const initChart = (item) => {
   });
 }
 
-
-
+//导出
+const exportBtn = () => {
+  let prefixedUrl = window.GLOBAL_CONFIG.web_pc;
+  let fullUrl = prefixedUrl + '/openapi/echart/garde_section.php?api=xls&token=' + user.value.token;
+  window.open(fullUrl,'_blank')
+}
 
 
 </script>

+ 31 - 53
src/pages/ksfx/cjfx_jstj/[ykj_id].vue

@@ -12,20 +12,13 @@
 
         <div class="flex items-center">
 
-          <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>
+          <optionSelect  @optionClick="optionClick" />
 
-          <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>
 
         </div>
         <div class="flex justify-between mt-4 exportBtn">
           <div>
-            <el-button color="#003eee" type="primary" size="large">导出</el-button>
+            <el-button color="#003eee" type="primary" size="large" @click="exportBtn">导出</el-button>
           </div>
           <div>
             <el-input v-model="searchVal" class="w-50 m-2" placeholder="请输入搜索内容" :prefix-icon="Search" />
@@ -75,68 +68,35 @@
 </route>
 <script lang="ts" setup>
 import {cjfx_jstj_list } from '../apiItem';
-import { useRouter } from "vue-router";
-const router = useRouter();
 const route = useRoute();
+import { user } from "~/store";
 
-let normal_subject = $ref("");
-let normal_school = $ref("");
 let searchVal = $ref('');
 
-let subject_list = [{
-  value: '1',
-  label: '语文'
-}, {
-  value: '2',
-  label: '数学'
-}]
-
-
-let school_list = [{
-  value: '1',
-  label: '学校1'
-}, {
-  value: '2',
-  label: '学校2'
-}]
-
-const activeIndex =ref('1-6');
+const activeIndex =ref('1-5');
 const ykjId = ref();
-const parentClick = (val) => {
+const parentClick = (val: string) => {
   activeIndex.value = val;
   ykjId.value = route.params.ykj_id;
 }
 
 
-const tableData = ref([
-  {
-    xx: "临沂市蒙阴县乡镇小学",
-    js: "热巴",
-    xk: "语文",
-    pm: "1",
-    xpm: "23",
-    bj: "初一(2)班、初一(3)班初一(4)班",
-    pjf: "123.23",
-    skrs: "1234",
-    zgf: "132.22",
-    yxrs: "2637",
-    yxl: "23.34%",
-    jgrs: "4323",
-    jgl: '23.34%',
-    dfrs: "23.43%",
-    dfl: "23.34%",
-  }]);
+const tableData = ref([]);
 
 ykjId.value = route.params.ykj_id;
 onMounted(() => {
   initData();
 })
 
+const school_id = ref("");
+const grade_id = ref("");
+const xueke_id = ref("");
 const initData =() => {
   let transObj = {
-    xueke_id: '',
-    grade_id: '',
-    school_id: ''
+    school_id:school_id.value,
+    cm_id: grade_id.value,
+    xueke_id: xueke_id.value,
+    jh_id:route.params.ykj_id
   }
   cjfx_jstj_list(transObj)
     .then(res => {
@@ -147,6 +107,24 @@ const initData =() => {
   .catch(error=>{console.log(error)})
 }
 
+//option筛选
+const optionClick = (val: any, marke: any) => {
+  if (marke == "scholl") {
+    school_id.value = val;
+  } else if (marke == "grade") {
+    grade_id.value = val;
+  } else {
+    xueke_id.value = val;
+  }
+  initData();
+}
+
+//导出
+const exportBtn = () => {
+  let prefixedUrl = window.GLOBAL_CONFIG.web_pc;
+  let fullUrl = prefixedUrl + '/openapi/echart/teacher_data.php?api=xls&token=' + user.value.token;
+  window.open(fullUrl,'_blank')
+}
 
 </script>
 

+ 31 - 41
src/pages/ksfx/cjfx_pjflcfx/[ykj_id].vue

@@ -12,20 +12,12 @@
 
         <div class="flex items-center">
 
-          <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>
-
-          <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>
+          <optionSelect  @optionClick="optionClick" />
 
         </div>
         <div class="flex justify-between mt-4 exportBtn">
           <div>
-            <el-button color="#003eee" type="primary" size="large">导出</el-button>
+            <el-button color="#003eee" type="primary" size="large" @click="exportBtn">导出</el-button>
           </div>
 
         </div>
@@ -65,36 +57,13 @@
 </route>
 <script lang="ts" setup>
 import * as echarts from 'echarts';
-import {normalSchool_list,normalSubject_list,normalClassroom_list,cjfx_pjflcfx_list } from '../apiItem';
-import { useRouter } from "vue-router";
-const router = useRouter();
+import {cjfx_pjflcfx_list } from '../apiItem';
 const route = useRoute();
-
-let normal_subject = $ref("");
-let normal_school = $ref("");
-let normal_teacher = $ref("");
-
-
-let subject_list = [{
-  value: '1',
-  label: '语文'
-}, {
-  value: '2',
-  label: '数学'
-}]
-
-let school_list = [{
-  value: '1',
-  label: '学校1'
-}, {
-  value: '2',
-  label: '学校2'
-}]
-
+import { user } from "~/store";
 
 const activeIndex =ref('1-4');
 const ykjId = ref();
-const parentClick = (val) => {
+const parentClick = (val: string) => {
   activeIndex.value = val;
   ykjId.value = route.params.ykj_id;
 }
@@ -133,11 +102,15 @@ onMounted(() => {
   initData();
 })
 
+const school_id = ref("");
+const grade_id = ref("");
+const xueke_id = ref("");
 const initData =() => {
   let transObj = {
-    xueke_id: '',
-    grade_id: '',
-    school_id: ''
+    school_id:school_id.value,
+    cm_id: grade_id.value,
+    xueke_id: xueke_id.value,
+    jh_id:route.params.ykj_id
   }
   cjfx_pjflcfx_list(transObj)
     .then(res => {
@@ -150,7 +123,19 @@ const initData =() => {
   .catch(error=>{console.log(error)})
 }
 
-const initChart = (item) => {
+//option筛选
+const optionClick = (val: any, marke: any) => {
+  if (marke == "scholl") {
+    school_id.value = val;
+  } else if (marke == "grade") {
+    grade_id.value = val;
+  } else {
+    xueke_id.value = val;
+  }
+  initData();
+}
+
+const initChart = (item: { xAxis_data: any; series: any; }) => {
   const colors=['#9CFF68','#FE6868']
   var myChart = echarts.init(document.getElementById('echartData'));
   myChart.setOption({
@@ -189,7 +174,12 @@ const initChart = (item) => {
 });
 }
 
-
+//导出
+const exportBtn = () => {
+  let prefixedUrl = window.GLOBAL_CONFIG.web_pc;
+  let fullUrl = prefixedUrl + '/openapi/echart/average_data.php?api=xls&token=' + user.value.token;
+  window.open(fullUrl,'_blank')
+}
 
 </script>
 

+ 28 - 64
src/pages/ksfx/cjfx_slyf/[ykj_id].vue

@@ -11,25 +11,7 @@
       <div class="w-1012px p-4 overflow-visible blueBg">
 
         <div class="flex items-center">
-          <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>
-
-          <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_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_teacher" 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>
+          <optionSelect  @optionClick="optionClick" />
 
         </div>
         <div class="flex justify-between mt-4 exportBtn">
@@ -64,7 +46,7 @@
           </el-table>
 
           <div class="mt-4" >
-            <el-pagination background layout="prev, pager, next " :total="1000" style="justify-content: right;" />
+            <el-pagination background layout="prev, pager, next " :total="totalPage" style="justify-content: right;" />
             </div>
 
         </div>
@@ -114,44 +96,8 @@
 </route>
 <script lang="ts" setup>
 import {cjfx_slyf_list } from '../apiItem';
-import { useRouter } from "vue-router";
-const router = useRouter();
 const route = useRoute();
-
-
-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'
-}]
+import {user} from "~/store";
 
 // 侧边栏点击
 const activeIndex =ref('1-2');
@@ -167,33 +113,51 @@ ykjId.value = route.params.ykj_id;
 onMounted(() => {
   initData()
 })
+const totalPage = ref();
+
+const school_id = ref("");
+const grade_id = ref("");
+const xueke_id = ref("");
 
 const initData =() => {
   let transObj = {
-    xueke_id: '',
-    grade_id: '',
-    school_id: ''
+    school_id:school_id.value,
+    cm_id: grade_id.value,
+    xueke_id: xueke_id.value,
+    jh_id:route.params.ykj_id
   }
   cjfx_slyf_list(transObj)
     .then(res => {
       if (res.code == "1") {
         tableData.value = res.data.tableData;
+        totalPage.value = res.data.tableData.length;
       }
     })
   .catch(error=>{console.log(error)})
 }
 
+//option筛选
+const optionClick = (val: any, marke: any) => {
+  if (marke == "scholl") {
+    school_id.value = val;
+  } else if (marke == "grade") {
+    grade_id.value = val;
+  } else {
+    xueke_id.value = val;
+  }
+  initData();
+}
+
 //重置
 const restBtn = () => {
-  normal_subject = "";
-  normal_classroom = "";
-  normal_school = "";
   normal_teacher = "";
 
 }
 //导出
 const exportBtn = () => {
-  console.log("daochu")
+  let prefixedUrl = window.GLOBAL_CONFIG.web_pc;
+  let fullUrl = prefixedUrl + '/openapi/echart/sfyl_data.php?api=xls&token=' + user.value.token;
+  window.open(fullUrl,'_blank')
 }
 
 

+ 14 - 16
src/pages/ksfx/sjfx_kgtfx/[ykj_id].vue

@@ -82,33 +82,30 @@ import * as echarts from 'echarts';
 import { skeletonProps } from 'element-plus';
 import {normalSchool_list,normalSubject_list,normalClassroom_list,cjfx_kgtfx_list } from '../apiItem';
 
-import { useRouter } from "vue-router";
-const router = useRouter();
 const route = useRoute();
 
-let normal_topic = $ref("");
-let normal_school = $ref("");
+let normal_topic = ref("");
+let normal_school = ref("");
 
-let topic_list = [{
+let school_list = ref([{
   value: '1',
-  label: '语文'
+  label: '学校1'
 }, {
   value: '2',
-  label: '学'
-}]
+  label: '学校2'
+}])
 
-let school_list = [{
+let topic_list = ref([{
   value: '1',
-  label: '学校1'
+  label: '主观题'
 }, {
   value: '2',
-  label: '学校2'
-}]
-
+  label: '客观题'
+}]);
 
 const activeIndex =ref('2-2');
 const ykjId = ref();
-const parentClick = (val) => {
+const parentClick = (val: string) => {
   activeIndex.value = val;
   ykjId.value = route.params.ykj_id;
 }
@@ -133,7 +130,7 @@ const initData = () => {
   .catch(error=>{console.log(error)})
 }
 
-const initbarChart = (barChartData) => {
+const initbarChart = (barChartData: { xAxis_data: any; series_data: any; }) => {
   var myChart = echarts.init(document.getElementById('barChart'));
   myChart.setOption({
     title: {
@@ -177,7 +174,7 @@ const initbarChart = (barChartData) => {
     ]
   });
 }
-const initcircleChart = (circleChartData) => {
+const initcircleChart = (circleChartData: { series_name: any; series_data: any; }) => {
   var myChart = echarts.init(document.getElementById('circleChart'));
   myChart.setOption({
   tooltip: {
@@ -366,6 +363,7 @@ let dialogArr = [
   }
 ]
 
+
 </script>
 
 

+ 31 - 99
src/pages/ksfx/sjfx_ztfx/[ykj_id].vue

@@ -34,25 +34,12 @@
 
         <div class="flex mt-20px items-center">
 
-          <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>
-
-          <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_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>
+          <optionSelect  @optionClick="optionClick" />
 
         </div>
         <div class="flex justify-between mt-4 exportBtn">
           <div>
-            <el-button color="#003eee" type="primary" size="large">导出</el-button>
+            <el-button color="#003eee" type="primary" size="large" @click="exportBtn">导出</el-button>
           </div>
 
         </div>
@@ -116,97 +103,19 @@
 }
 </route>
 <script lang="ts" setup>
-import {normalSchool_list,normalSubject_list,normalClassroom_list,cjfx_ztfx_list } from '../apiItem';
-import { useRouter } from "vue-router";
-const router = useRouter();
+import {cjfx_ztfx_list } from '../apiItem';
 const route = useRoute();
-
-let normal_subject = $ref("");
-let normal_school = $ref("");
-let normal_classroom = $ref("");
-
-let subject_list = [{
-  value: '1',
-  label: '语文'
-}, {
-  value: '2',
-  label: '数学'
-}]
-
-let school_list = [{
-  value: '1',
-  label: '学校1'
-}, {
-  value: '2',
-  label: '学校2'
-}]
-
-let classroom_list = [{
-  value: '1',
-  label: '英语'
-}, {
-  value: '2',
-  label: '体育'
-}, {
-  value: '3',
-  label: '音乐'
-}
-];
-
-
+import { user } from "~/store";
 
 
 const activeIndex =ref('2-1');
 const ykjId = ref();
-const parentClick = (val) => {
+const parentClick = (val: string) => {
   activeIndex.value = val;
   ykjId.value = route.params.ykj_id;
 }
-
 const tableDataZtcjfx = ref([]);
-
-
 const tableDataTmfx = ref()
-// [
-//   {
-//     tm:1,
-//     tmlx:"单选",
-//     mf:23,
-//     pjf:12,
-//     nd:0.54,
-//     qfd:0.54,
-//     bzc:0.54,
-//     gfzjf:0.13,
-//     zdzjf:0.13,
-//     dfzjf:0.13,
-//   },
-//   {
-//     tm:1,
-//     tmlx:"多选",
-//     mf:23,
-//     pjf:12,
-//     nd:0.54,
-//     qfd:0.54,
-//     bzc:0.54,
-//     gfzjf:0.13,
-//     zdzjf:0.13,
-//     dfzjf:0.13,
-//   },
-//   {
-//     tm:1,
-//     tmlx:"主观题",
-//     mf:23,
-//     pjf:12,
-//     nd:0.54,
-//     qfd:0.54,
-//     bzc:0.54,
-//     gfzjf:0.13,
-//     zdzjf:0.13,
-//     dfzjf:0.13,
-//   },
-
-// ];
-
 
 const tableData = ref();
 ykjId.value = route.params.ykj_id;
@@ -214,11 +123,15 @@ onMounted(() => {
   initData()
 })
 
+const school_id = ref("");
+const grade_id = ref("");
+const xueke_id = ref("");
 const initData = () => {
   let transObj = {
-    xueke_id: '',
-    grade_id: '',
-    school_id:''
+    school_id:school_id.value,
+    cm_id: grade_id.value,
+    xueke_id: xueke_id.value,
+    jh_id:route.params.ykj_id
   }
   cjfx_ztfx_list(transObj)
     .then(res => {
@@ -231,6 +144,25 @@ const initData = () => {
   .catch(error=>{console.log(error)})
 }
 
+//option筛选
+const optionClick = (val: any, marke: any) => {
+  if (marke == "scholl") {
+    school_id.value = val;
+  } else if (marke == "grade") {
+    grade_id.value = val;
+  } else {
+    xueke_id.value = val;
+  }
+  initData();
+}
+
+//导出
+const exportBtn = () => {
+  let prefixedUrl = window.GLOBAL_CONFIG.web_pc;
+  let fullUrl = prefixedUrl + '/openapi/echart/total_data.php?api=xls&token=' + user.value.token;
+  window.open(fullUrl,'_blank')
+}
+
 </script>