Bladeren bron

图片放置 public 路由调整

la 2 jaren geleden
bovenliggende
commit
ed9216b617

+ 15 - 0
components.d.ts

@@ -15,6 +15,8 @@ declare module '@vue/runtime-core' {
     ElBreadcrumb: typeof import('element-plus/es')['ElBreadcrumb']
     ElBreadcrumbItem: typeof import('element-plus/es')['ElBreadcrumbItem']
     ElButton: typeof import('element-plus/es')['ElButton']
+    ElCheckbox: typeof import('element-plus/es')['ElCheckbox']
+    ElCheckboxGroup: typeof import('element-plus/es')['ElCheckboxGroup']
     ElConfigProvider: typeof import('element-plus/es')['ElConfigProvider']
     ElDatePicker: typeof import('element-plus/es')['ElDatePicker']
     ElDialog: typeof import('element-plus/es')['ElDialog']
@@ -22,9 +24,22 @@ declare module '@vue/runtime-core' {
     ElFormItem: typeof import('element-plus/es')['ElFormItem']
     ElIcon: typeof import('element-plus/es')['ElIcon']
     ElInput: typeof import('element-plus/es')['ElInput']
+    ElInputNumber: typeof import('element-plus/es')['ElInputNumber']
+    ElLink: typeof import('element-plus/es')['ElLink']
+    ElMenu: typeof import('element-plus/es')['ElMenu']
+    ElMenuItem: typeof import('element-plus/es')['ElMenuItem']
     ElOption: typeof import('element-plus/es')['ElOption']
     ElPagination: typeof import('element-plus/es')['ElPagination']
+    ElRadio: typeof import('element-plus/es')['ElRadio']
+    ElRadioGroup: typeof import('element-plus/es')['ElRadioGroup']
     ElSelect: typeof import('element-plus/es')['ElSelect']
+    ElStep: typeof import('element-plus/es')['ElStep']
+    ElSteps: typeof import('element-plus/es')['ElSteps']
+    ElSubMenu: typeof import('element-plus/es')['ElSubMenu']
+    ElTable: typeof import('element-plus/es')['ElTable']
+    ElTableColumn: typeof import('element-plus/es')['ElTableColumn']
+    'I:mdi:horizontalLine': typeof import('~icons/mdi/horizontal-line')['default']
+    'I:mdi:tick': typeof import('~icons/mdi/tick')['default']
     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']

src/assets/ksfx/big_bg.png → public/images/big_bg.png


src/assets/ksfx/one1.png → public/images/one1.png


src/assets/ksfx/one2.png → public/images/one2.png


src/assets/ksfx/one3.png → public/images/one3.png


src/assets/ksfx/one4.png → public/images/one4.png


src/assets/ksfx/one5.png → public/images/one5.png


+ 12 - 7
src/components/leftSider/index.vue

@@ -39,26 +39,30 @@
 <script lang="ts" setup>
 import { useRouter } from "vue-router";
 const router = useRouter();
-import { Document, Location, Setting} from '@element-plus/icons-vue';
 import { defineProps,defineEmits } from 'vue';
-const props = defineProps(['activeIndex']);
+const props = defineProps(['activeIndex','ykjId']);
 const emit = defineEmits(['parentClick'])
 
-
+console.log(router)
 const openeds = ref(['1-1', '1-2', '1-3', '1-4', '1-5', '2-1', '2-2']);
 
+//点击事件
 const selectMenu = (key: string, keyPath: string[]) => {
-  console.log(key);
   emit('parentClick', key);
   switch (key) {
     case '1-1'://成绩单
-      router.push('cjfx_cjd')
+      router.push(
+        { name: 'ksfx-cjfx_cjd-ykj_id', params: { ykj_id: props.ykjId } }
+        // 'cjfx_cjd'
+      )
       break;
     case '1-2'://三率一分
-      router.push('cjfx_slyf')
+      router.push(
+        { name: 'ksfx-cjfx_slyf-ykj_id', params: { ykj_id: props.ykjId } }
+      )
       break;
     case '1-3'://分数段统计
-      router.push('cjfx_fsdtj')
+      router.push({ name: 'ksfx-cjfx_fsdtj-ykj_id', params: {ykj_id:props.ykjId} })
       break;
     case '1-4'://平均分离差分析
       router.push('cjfx_pjflcfx')
@@ -80,6 +84,7 @@ const selectMenu = (key: string, keyPath: string[]) => {
 
 
 
+
 //开启
 const handleOpen = (key: string, keyPath: string[]) => {
   console.log(key, keyPath,"open");

+ 7 - 0
src/pages/ksfx/apiItem.js

@@ -30,6 +30,13 @@ export const ksjh_list = (data = {}) => {
   })
 }
 
+//考试计划详情
+export const ksjh_detail = (data={}) => {
+  return request({
+    url:'/yzy/ksjh/detail',
+    data,
+  })
+}
 
 //===============================成绩分析=================================
 

+ 78 - 56
src/pages/ksfx/cjfx_cjd.vue

@@ -5,7 +5,7 @@
 
     <div class="w-1200px m-auto flex flex-row justify-between">
       <div class="w-188">
-        <leftSider :activeIndex="activeIndex"  @parentClick="parentClick"/>
+        <leftSider :activeIndex="activeIndex" :ykjId="ykjId"  @parentClick="parentClick"/>
       </div>
 
       <div class="w-942 p-4 blueBg">
@@ -24,7 +24,7 @@
             <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-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>
@@ -35,10 +35,10 @@
         </div>
 
         <div class="h-218px mt-5px  bg-gray-500 py-4 pl-150px pr-100px perfectShow">
-          <div class="h-full  flex justify-between">
+          <div class="h-full  flex justify-between" v-if="rangeData.length==0">
             <div class="h-full bg-opacity-20 rounded singlepart" v-for="(item, index) in rangeData" :key="index">
               <div class="h-1/3 text-center py-4  RankLabel">
-                <img :src="'../../src/assets/ksfx/one'+(index+1)+'.png'" alt="">
+                <img :src="'/images/one'+(index+1)+'.png'" alt="">
               </div>
               <div class="text-sm p-5px RankBaseInfo">
                 <p class="h-1/4">考号:{{ item.kh }}</p>
@@ -48,6 +48,9 @@
               </div>
             </div>
           </div>
+          <div class="text-center " style="line-height:218px;" v-else>
+            暂无排名~
+          </div>
         </div>
 
         <div class="h-auto mt-9px listMain" >
@@ -100,9 +103,10 @@
 }
 </route>
 <script lang="ts" setup>
-import {normalSchool_list,cjfx_cjd_list } from './apiItem';
+import {ksjh_detail,cjfx_cjd_list } from '../apiItem';
 import { useRouter } from "vue-router";
 const router = useRouter();
+const route = useRoute();
 
 let allData = ref("");
 let normal_subject = $ref("");
@@ -114,9 +118,6 @@ let normal_school = $ref("");
 let school_list = ref([{
   value: '1',
   label: '学校1'
-}, {
-  value: '2',
-  label: '学校2'
 }]);
 
 let classroom_list = [{
@@ -131,57 +132,24 @@ let classroom_list = [{
 }
 ];
 
-let subject_list = [{
+let subject_list = ref([{
   value: '1',
   label: '语文'
 }, {
   value: '2',
   label: '数学'
-}];
+}]);
+
 
 // 侧边栏点击
-const activeIndex =ref('1-1');
-const parentClick = (val) => {
+const activeIndex = ref('1-1');
+let ykjId = ref('');
+const parentClick = (val: string) => {
   activeIndex.value = val;
+  ykjId.value = route.params.ykj_id;
 }
 
-let rangeData = [
-  {
-    kh: "033055697",
-    cj: "13.0",
-    mc: "第一名",
-    xx: "博智实验学校",
-
-  },
-  {
-    kh: "033055697",
-    cj: "13.0",
-    mc: "第一名",
-    xx: "博智实验学校",
-
-  },
-  {
-    kh: "033055697",
-    cj: "13.0",
-    mc: "第一名",
-    xx: "博智实验学校",
-
-  },
-  {
-    kh: "033055697",
-    cj: "13.0",
-    mc: "第一名",
-    xx: "博智实验学校",
-
-  },
-  {
-    kh: "033055697",
-    cj: "13.0",
-    mc: "第一名",
-    xx: "博智实验学校",
-
-  }
-]
+let rangeData =ref([])
 let listTitleShow = ref({
   "kh": "考号",
   "xm": "姓名",
@@ -225,16 +193,60 @@ let listShow = ref([
 ]);
 
 
+
 onMounted(() => {
+  // ykjId.value = route.params.ykj_id;
+  initOption();
   initData();
 })
+// 初始化选项列表
+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;
+
+        //
+
+        //联考下的学科-从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 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,
+    grade_id: grade_id.value,
+    xueke_id: xueke_id.value,
+    jh_id:route.params.ykj_id,//考试计划id
   }
   cjfx_cjd_list(transObj)
     .then(res => {
@@ -252,10 +264,20 @@ const exportBtn = () => {
   console.log("导出");
 }
 
+//点击学校筛选
 const handelSchool = (item) => {
-  let tempIn = allData.value.filter(item => item.sm_id == item);
-  // classroom_list.value=
-  console.log(item);
+  school_id.value = item;
+  initData();
+  //这里的联动缺失
+  //..................
+
+}
+//点击班级筛选
+
+//点击学科筛选
+const handelSubject=(item)=>{
+  xueke_id.value = item;
+  initData();
 }
 </script>
 
@@ -320,7 +342,7 @@ const handelSchool = (item) => {
   text-align: center;
 }
 .perfectShow{
-  background: url("@/assets/ksfx/big_bg.png") no-repeat left top;
+  background: url("/images/big_bg.png") no-repeat left top;
   background-size:cover;
 }
 .RankLabel{

+ 1 - 1
src/pages/ksfx/cjfx_fsdtj.vue

@@ -67,7 +67,7 @@
 }
 </route>
 <script lang="ts" setup>
-import {cjfx_fsdtj_list } from './apiItem';
+import {cjfx_fsdtj_list } from '../apiItem';
 import * as echarts from 'echarts';
 import { useRouter } from "vue-router";
 const router = useRouter();

+ 9 - 3
src/pages/ksfx/cjfx_slyf.vue

@@ -113,9 +113,11 @@
 }
 </route>
 <script lang="ts" setup>
-import {normalSchool_list,normalSubject_list,normalClassroom_list,normalTeacher_list,cjfx_slyf_list } from './apiItem';
+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("");
@@ -151,11 +153,13 @@ let school_list = [{
   label: '学校2'
 }]
 
-
+// 侧边栏点击
+const ykjId = ref('');
 const activeIndex =ref('1-2');
-
 const parentClick = (val) => {
+  console.log(val,"898989")
   activeIndex.value = val;
+  ykjId.value = route.params.ykj_id;
 }
 
 const tableData = ref([
@@ -194,10 +198,12 @@ const tableData = ref([
     nd: "0.92",
     qfd: "0.92",
     bzc: "87.45",
+
   },
 ]);
 
 onMounted(() => {
+  ykjId.value = route.params.ykj_id;
   initData()
 })
 

+ 6 - 5
src/pages/ksfx/ksfx.vue

@@ -6,7 +6,7 @@
       <div class="my-4 searchInput">
         <el-input
         class="w-200px "
-        v-model="input3"
+        v-model="searchValue"
         placeholder="请输入检索内容"
       >
         <template #append>
@@ -16,7 +16,7 @@
       </div>
       <div class="min-h-600px groupExamMian">
         <div class="demo-collapse">
-          <el-collapse accordion>
+          <el-collapse v-model="activeNames" >
             <el-collapse-item :name="index + 1" v-for="(item, index) in examArrlist" :key="index"
               :class="{ 'bg-cusblue': (index+1) % 2 == 0 }">
               <template #title>
@@ -34,7 +34,7 @@
 
                 <div class="px-90px py-10px flex flex-row justify-start flex-wrap  examList" v-if="item.examPaperList">
                   <div class="h-149px p-5px mt-10px flex flex-row justify-start examListSingle"
-                    v-for="(secItem, secIndex) in item.examPaperList" :key="secIndex" @click="linkTo('cjfx_cjd')">
+                    v-for="(secItem, secIndex) in item.examPaperList" :key="secIndex" @click="linkTo('stu_stfx')">
                     <div class="w-2/5 relative examListSingle_left">
                       <img :src="examIcon" class="w-full h-full" alt="">
                       <div class="w-full absolute top-0 left-0 text-right text-red-500 text-3xl font-bold pr-2 scoreNum"
@@ -83,9 +83,10 @@ import { useRouter } from "vue-router";
 import { skeletonProps } from 'element-plus';
 const router = useRouter();
 
-const input3 = ref('');
 
-const scoreMarkSwitch = $ref(true);
+const searchValue = ref('');
+const activeNames = ref(['1']);
+const scoreMarkSwitch = ref(true);
 
 let examArrlist = ref();