zhangjie 2 vuotta sitten
vanhempi
commit
6d91d1e37b

+ 10 - 3
src/components/RootOrgSelect.vue

@@ -1,6 +1,6 @@
 <template>
   <a-select
-    placeholder="请选择顶级机构"
+    placeholder="请选择学校"
     allowClear
     :value="valueStr"
     style="width: 140px"
@@ -20,7 +20,10 @@
 import { getRootOrgList } from "@/api/rootOrgPage";
 import { onMounted, computed } from "vue";
 
-const props = defineProps<{ value?: null | number | string }>();
+const props = defineProps<{
+  value?: null | number | string;
+  selectFirst?: boolean;
+}>();
 const emit = defineEmits(["update:value"]);
 
 let optionList = $ref<{ id: number; name: string }[]>([]);
@@ -28,6 +31,10 @@ let optionList = $ref<{ id: number; name: string }[]>([]);
 onMounted(async () => {
   const res = await getRootOrgList({});
   optionList = res.data.content;
+
+  if (optionList.length && props.selectFirst) {
+    handleChange(optionList[0].id);
+  }
 });
 
 const valueStr = computed(() => {
@@ -36,7 +43,7 @@ const valueStr = computed(() => {
   return res as undefined | string;
 });
 
-function handleChange(v: string) {
+function handleChange(v: number) {
   // console.log(v);
   emit("update:value", v);
 }

+ 16 - 1
src/features/allAnalysis/AllAnalysis2.vue

@@ -6,6 +6,8 @@
       <ProjectCourseSelect v-model:value="courseId" :projectId="projectId" />
       <span class="tw-mr-4"></span>
       <a-button class="query-btn" @click="search">查询</a-button>
+      <span class="tw-mr-4"></span>
+      <a-button @click="exportExcel">导出excel</a-button>
 
       <div class="tw-float-right tw-flex tw-gap-2">
         <!-- <a-button @click="goProjectPapers(projectId)"> 试卷列表 </a-button> -->
@@ -57,7 +59,7 @@
 
 <script setup lang="ts">
 import { useMainStore } from "@/store";
-import { goBack } from "@/utils/utils";
+import { goBack, downloadFileURL } from "@/utils/utils";
 import { onMounted } from "vue";
 import { useRoute } from "vue-router";
 import router from "@/router";
@@ -104,6 +106,19 @@ async function search() {
   await fetchData();
 }
 
+async function exportExcel() {
+  let params: Record<string, any> = {
+    projectId,
+    courseId,
+    pageNo,
+    pageSize,
+  };
+  if (sortOrder && sortColName) {
+    params = { ...params, sortColName, sortOrder };
+  }
+  await downloadFileURL("/api/ess/sasPaper/export", params);
+}
+
 interface fetchParamType {
   courseId?: number;
   projectId: number;

+ 9 - 13
src/features/paperAnalysis/PaperAnalysis.vue

@@ -7,11 +7,10 @@
         :projectId="projectId"
       />
       <span class="tw-mr-4"></span>
-      <CourseSelect
-        v-if="rootOrgId"
+      <ProjectCourseSelect
         v-model:value="courseId"
+        :projectId="projectId"
         disabled
-        :rootOrgId="rootOrgId"
       />
       <span class="tw-mr-4"></span>
       <PaperTypeSelect v-model:value="paperType" disabled />
@@ -61,6 +60,7 @@
           :projectId="projectId"
           :courseId="courseId"
           :paperId="paperId"
+          :startScore="startScore"
           :rangeConfig="paper.difficulityRangeConfig"
         />
       </div>
@@ -74,7 +74,7 @@
 <script setup lang="ts">
 import { useMainStore } from "@/store";
 import { goBack } from "@/utils/utils";
-import { watch, onMounted } from "vue";
+import { watch, onMounted, computed } from "vue";
 import { useRoute } from "vue-router";
 // import ProjectSelect from "@/components/ProjectSelect.vue";
 import {
@@ -96,8 +96,11 @@ store.currentLocation = "项目管理 / 项目列表 / 详情";
 
 let activeTab = $ref("6");
 
-let rootOrgId = $ref(undefined as unknown as number);
+let rootOrgId = computed(() => {
+  return store.userInfo.rootOrgId;
+});
 let courseId = $ref(undefined as unknown as number);
+let startScore = $ref(undefined as unknown as number);
 let paperType = $ref(undefined as undefined | string);
 // let paperName = $ref(undefined as undefined | string);
 const route = useRoute();
@@ -151,6 +154,7 @@ async function fetchData() {
   res4.data.discriminationLevel = JSON.parse(
     <string>(<unknown>res4.data.discriminationLevel) || "[]"
   );
+  startScore = res4.data.startScore || 0;
   // // console.log(res4.data);
   // sasPaper = res4.data;
 
@@ -168,15 +172,7 @@ async function fetchData() {
   paperQuestionGroups = res3.data;
 }
 
-watch(
-  () => store.userInfo.rootOrgId,
-  (val) => {
-    rootOrgId = val === -1 ? (undefined as unknown as number) : val;
-  }
-);
-
 onMounted(async () => {
-  // rootOrgId = store.userInfo.rootOrgId;
   await search();
 });
 </script>

+ 12 - 7
src/features/paperAnalysis/QuestionDifficultyGroup.vue

@@ -13,20 +13,19 @@
         <tr>
           <td>大题号</td>
           <td>小题号</td>
-          <td v-for="(item, index) in props.totalScore / 10" :key="index">
-            {{ index * 10 }}-
-          </td>
+          <template v-for="(item, index) in props.totalScore / 10" :key="index">
+            <td v-if="index >= limitScoreIndex">{{ index * 10 }}-</td>
+          </template>
         </tr>
         <tr v-for="(item, index) in props.questions" :key="index">
           <td>{{ item.mainNumber }}</td>
           <td>{{ item.subNumber }}</td>
-          <td
+          <template
             v-for="(item2, index2) in item.difficulityLevel"
             :key="index2"
-            v-round-number
           >
-            {{ item2 }}
-          </td>
+            <td v-if="index2 >= limitScoreIndex" v-round-number>{{ item2 }}</td>
+          </template>
         </tr>
       </table>
     </div>
@@ -104,6 +103,7 @@ import { RANGE_POINT_TYPE } from "@/constants/constants";
 import { RangeConfig, SASQuestion } from "@/types";
 import { message } from "ant-design-vue";
 import { EChartsOption } from "echarts";
+import { computed } from "vue";
 
 const props = defineProps<{
   questions: SASQuestion[];
@@ -112,6 +112,7 @@ const props = defineProps<{
   projectId: number;
   courseId: number;
   paperId: number;
+  startScore: number;
 }>();
 
 let visible = $ref(false);
@@ -130,6 +131,10 @@ let selectedRangeConfig = $ref([]);
 let selectedCourseId = $ref(0);
 console.log(props.rangeConfig);
 
+let limitScoreIndex = computed(() => {
+  return Math.floor(props.startScore / 10);
+});
+
 // const openRangeConfigModal = () => {
 //   selectedCourseId = props.courseId;
 //   selectedRangeConfig = JSON.parse(props.rangeConfig || "0") || [

+ 1 - 0
src/features/userManagement/UserManagement.vue

@@ -119,6 +119,7 @@
           <RootOrgSelect
             v-model:value="userObj.rootOrgId"
             :disabled="!!userObj.id"
+            selectFirst
           />
         </a-form-item>
         <a-form-item label="姓名">

+ 1 - 1
src/types/index.ts

@@ -217,7 +217,7 @@ export interface SASQuestion {
   courseId: number;
   createTime: string;
   difficulityGroupLevel: number[];
-  difficulityLevel: DifficulityLevel;
+  difficulityLevel: number[];
   difficulty: number;
   discrimination: number;
   effectiveCount: number;

+ 2 - 2
src/utils/utils.ts

@@ -3,9 +3,9 @@ import router from "@/router";
 import { AxiosResponse } from "axios";
 
 // 下载文件
-export async function downloadFileURL(url: string) {
+export async function downloadFileURL(url: string,data: Record<string, any> = {}) {
   return httpApp
-    .get(url, { responseType: "blob" })
+    .get(url, { responseType: "blob" ,params:data})
     .then((res) => {
       return responseToFile(res);
     })