Browse Source

重新计算的交互效果

Michael Wang 3 years ago
parent
commit
141bf290a6

+ 10 - 4
src/api/projectManagementPage.ts

@@ -1,4 +1,5 @@
 import { httpApp } from "@/plugins/axiosApp";
+import { responseToFile } from "@/utils/utils";
 
 /** 项目分页查询 */
 export function getProjectList(params: {
@@ -47,10 +48,15 @@ export function restartProject(id: number) {
 
 /** 项目错误报告 */
 export function logsOfProject(id: number) {
-  return httpApp.post(
-    `/api/ess/project/error`,
-    new URLSearchParams([["projectId", id + ""]])
-  );
+  return httpApp
+    .post(
+      `/api/ess/project/error?` + new URLSearchParams([["projectId", id + ""]]),
+      null,
+      { responseType: "blob" }
+    )
+    .then(function (response) {
+      return responseToFile(response);
+    });
 }
 
 /** 导入项目数据 */

+ 0 - 1
src/features/projectDataManagement/ProjectDataManagement.vue

@@ -1,7 +1,6 @@
 <template>
   <div>
     <div class="tw-bg-white tw-p-5 tw-rounded-xl tw-mb-5">
-      <span class="tw-mr-4"></span>
       项目名称<a-input
         disabled
         v-model:value="project.name"

+ 51 - 5
src/features/projectManagement/ProjectManagement.vue

@@ -20,7 +20,7 @@
       class="tw-flex tw-gap-2 tw-my-4"
     >
       <a-button type="primary" @click="newProject">新增</a-button>
-      <a-button @click="handleDeleteProjects(selectIds)"> 批量删除 </a-button>
+      <a-button @click="handleDeleteProjects(selectIds)">批量删除</a-button>
     </div>
 
     <div class="tw-bg-white tw-p-5 tw-rounded-xl">
@@ -70,7 +70,8 @@
                 record.status === 'FINISH' &&
                 store.isGreaterThanEqualRootOrgAdmin
               "
-              @click="handleRestartProject(record.id)"
+              @click="selectRestartProject(record)"
+              :class="[record.needCompute && 'need-compute']"
             >
               重新计算
             </a-button>
@@ -118,6 +119,25 @@
         </a-form-item>
       </a-form>
     </a-modal>
+
+    <a-modal
+      v-model:visible="showRestartModalVisible"
+      title="重新计算"
+      @ok="handleRestartProject"
+      ok-text="确定"
+      cancel-text="取消"
+    >
+      <ul class="tw-ml-4 tw-list-disc">
+        <li v-if="selectedProject.changeInfo?.ITEM1">单科线</li>
+        <li v-if="selectedProject.changeInfo?.ITEM2">题型分布</li>
+        <li v-if="selectedProject.changeInfo?.ITEM3">试题难度分组分段分布</li>
+        <li v-if="selectedProject.changeInfo?.ITEM4">客观题高低分组</li>
+        <li v-if="selectedProject.changeInfo?.ITEM5">科目分数线分组分段</li>
+        <li v-if="selectedProject.changeInfo?.ITEM6">
+          本科目成绩占初试总分权重分段
+        </li>
+      </ul>
+    </a-modal>
   </div>
 </template>
 
@@ -132,7 +152,6 @@ import {
 } from "@/api/projectManagementPage";
 import router from "@/router";
 import { useMainStore } from "@/store";
-import { goBack } from "@/utils/utils";
 import { message, Modal } from "ant-design-vue";
 import { watch, onMounted, ref, reactive, toRaw } from "vue-demi";
 
@@ -163,6 +182,10 @@ async function fetchData() {
     pageNo,
   });
   // console.log(res);
+  res.data.content = res.data.content.map((p: any) => {
+    p.changeInfo = JSON.parse(p.changeInfo || "{}");
+    return p;
+  });
   data = res.data.content;
   pageNo = res.data.pageNo;
   pageSize = res.data.pageSize;
@@ -287,15 +310,22 @@ async function handleCancelProject(id: number) {
   });
 }
 
-async function handleRestartProject(id: number) {
+let showRestartModalVisible = $ref(false);
+let selectedProject = reactive({ id: 0 });
+function selectRestartProject(p: any) {
+  Object.assign(selectedProject, p);
+  showRestartModalVisible = true;
+}
+async function handleRestartProject() {
   Modal.confirm({
     title: "提示",
     content: "确认重新计算?",
     cancelText: "取消",
     okText: "确定",
     onOk: async () => {
-      await restartProject(id);
+      await restartProject(selectedProject.id);
       await search();
+      showRestartModalVisible = false;
       message.success({ content: "操作成功" });
     },
   });
@@ -322,3 +352,19 @@ async function goAllAnalysis(projectId: number) {
   router.push(`/project/allAnalysis/${projectId}`);
 }
 </script>
+
+<style>
+.need-compute span {
+  color: red;
+  animation: 1s ease-in-out 1s infinite alternate scale_text;
+}
+
+@keyframes scale_text {
+  from {
+    transform: scale(1);
+  }
+  to {
+    transform: scale(1.1);
+  }
+}
+</style>