Browse Source

数据管理

Michael Wang 3 years ago
parent
commit
e16171ec20

+ 9 - 0
src/api/projectManagementPage.ts

@@ -2,6 +2,7 @@ import { httpApp } from "@/plugins/axiosApp";
 
 /** 项目分页查询 */
 export function getProjectList(params: {
+  id?: number;
   status?: string;
   name?: string;
   rootOrgId: number;
@@ -51,3 +52,11 @@ export function logsOfProject(id: number) {
     new URLSearchParams([["projectId", id + ""]])
   );
 }
+
+/** 导入项目数据 */
+export function importProjectDataSource(projectId: number, file: File) {
+  const f = new FormData();
+  f.append("projectId", projectId + "");
+  f.append("file", file);
+  return httpApp.post(`/api/ess/task/import`, f);
+}

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

@@ -0,0 +1,108 @@
+<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"
+        class="tw-mr-4"
+        style="width: 178px"
+        placeholder="项目名称"
+        allowClear
+      ></a-input>
+
+      <span class="tw-mr-4"></span>
+      数据解析状态<a-input
+        disabled
+        :value="$filters.projectStatusFilter(project.status)"
+        class="tw-mr-4"
+        style="width: 178px"
+        placeholder="项目名称"
+        allowClear
+      ></a-input>
+      <span class="tw-mr-4"></span>
+      <a-button @click="goBack">返回</a-button>
+
+      <div class="tw-mt-4">
+        <a-form>
+          <a-form-item label="文件地址">
+            <input id="file-input" :multiple="false" type="file" />
+          </a-form-item>
+          <a-form-item label="下载模板">
+            <a-button @click="downloadTpl">下载模板</a-button>
+          </a-form-item>
+        </a-form>
+      </div>
+      <div class="tw-mt-4">
+        处理报告
+        <a-button @click="handleLogsOfProject"> 下载报告文件 </a-button>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script setup lang="ts">
+import {
+  cancelProject,
+  deleteProjects,
+  getProjectList,
+  importProjectDataSource,
+  logsOfProject,
+  updateProject,
+} from "@/api/projectManagementPage";
+import { useMainStore } from "@/store";
+import { downloadFileURL, goBack } from "@/utils/utils";
+import { message } from "ant-design-vue";
+import { watch, onMounted, ref, reactive, toRaw, computed } from "vue-demi";
+import { useRoute } from "vue-router";
+
+const store = useMainStore();
+store.currentLocation = "基础管理 / 项目列表";
+
+let rootOrgId = $ref(undefined as unknown as number);
+
+const route = useRoute();
+const projectId = +route.params.id;
+let data = $ref([]);
+
+let project: any = computed(() => data[0] || {});
+
+async function search() {
+  await fetchData();
+}
+
+async function fetchData() {
+  const res = await getProjectList({
+    id: projectId,
+    rootOrgId,
+  });
+  data = res.data.content;
+}
+
+onMounted(async () => {
+  rootOrgId = store.userInfo.rootOrgId;
+  await search();
+});
+
+async function downloadTpl() {
+  downloadFileURL("/api/ess/project/template");
+}
+
+async function handleImport() {
+  const files = (document.querySelector("#file-input") as HTMLInputElement)
+    .files;
+  const fileToImport = files && files[0];
+  if (!fileToImport) {
+    message.warn({ content: "请选择文件" });
+    return;
+  }
+
+  await importProjectDataSource(rootOrgId, fileToImport);
+  message.success({ content: "导入成功" });
+}
+
+async function handleLogsOfProject() {
+  await logsOfProject(projectId);
+  message.success({ content: "操作成功" });
+}
+</script>

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

@@ -63,13 +63,13 @@
               错误报告
             </a-button>
             <a-button
-              v-if="record.status === 'PROCESSING'"
-              @click="handleDeleteProjects([record.id])"
+              v-if="record.status !== 'PROCESSING'"
+              @click="goProjectDataSource(record.id)"
             >
               数据管理
             </a-button>
             <a-button
-              v-if="record.status === 'PROCESSING'"
+              v-if="record.status !== 'PROCESSING'"
               @click="handleDeleteProjects([record.id])"
             >
               参数配置
@@ -115,9 +115,13 @@ import {
   cancelProject,
   deleteProjects,
   getProjectList,
+  logsOfProject,
+  restartProject,
   updateProject,
 } from "@/api/projectManagementPage";
+import router from "@/router";
 import { useMainStore } from "@/store";
+import { goBack } from "@/utils/utils";
 import { message } from "ant-design-vue";
 import { watch, onMounted, ref, reactive, toRaw } from "vue-demi";
 
@@ -254,12 +258,16 @@ async function handleCancelProject(id: number) {
 }
 
 async function handleRestartProject(id: number) {
-  await cancelProject(id);
+  await restartProject(id);
   message.success({ content: "操作成功" });
 }
 
 async function handleLogsOfProject(id: number) {
-  await cancelProject(id);
+  await logsOfProject(id);
   message.success({ content: "操作成功" });
 }
+
+function goProjectDataSource(id: number) {
+  router.push("datasource/" + id);
+}
 </script>

+ 1 - 5
src/features/userManagement/UserPrivilege.vue

@@ -15,8 +15,8 @@
 
 <script setup lang="ts">
 import { getUserList } from "@/api/userManagementPage";
-import router from "@/router";
 import { useMainStore } from "@/store";
+import { goBack } from "@/utils/utils";
 import { onMounted, reactive } from "vue-demi";
 import { useRoute } from "vue-router";
 import UserPrivilegeCourse from "./UserPrivilegeCourse.vue";
@@ -47,8 +47,4 @@ async function fetchData() {
 onMounted(async () => {
   await search();
 });
-
-function goBack() {
-  router.back();
-}
 </script>

+ 5 - 0
src/router/index.ts

@@ -51,6 +51,11 @@ const routes = [
         component: () =>
           import("@/features/projectManagement/ProjectManagement.vue"),
       },
+      {
+        path: "datasource/:id",
+        component: () =>
+          import("@/features/projectDataManagement/ProjectDataManagement.vue"),
+      },
     ],
     component: Layout,
   },

+ 6 - 0
src/utils/utils.ts

@@ -1,4 +1,5 @@
 import { httpApp } from "@/plugins/axiosApp";
+import router from "@/router";
 
 // 下载文件
 export async function downloadFileURL(url: string, name?: string) {
@@ -25,3 +26,8 @@ export async function downloadFileURL(url: string, name?: string) {
     })
     .catch((err) => {});
 }
+
+// 返回
+export function goBack() {
+  router.back();
+}