Browse Source

配置当前工程相关逻辑。

jiaxiaoqiang 4 months ago
parent
commit
f2626ee895

+ 11 - 2
src/api/project/index.ts

@@ -31,9 +31,9 @@ export function deleteProject(id: number): AxiosPromise {
 }
 
 // 根据id查询测试工程表
-export function getProjectById(id: number): AxiosPromise {
+export function getProjectById(id: string): AxiosPromise {
   return request({
-    url: "/api/v1/test/engineering/" + id,
+    url: `/api/v1/test/engineering/get/${id}`,
     method: "get",
   });
 }
@@ -57,3 +57,12 @@ export function getProjectTypeCount(): AxiosPromise {
     data: {},
   });
 }
+
+// 测试工程项目列表查询
+export function getTestProjectList(data: object): AxiosPromise {
+  return request({
+    url: "/api/v1/test/engrProject/list",
+    method: "post",
+    data: data,
+  });
+}

+ 2 - 1
src/router/index.ts

@@ -58,7 +58,8 @@ export const constantRoutes: RouteRecordRaw[] = [
     ],
   },
   {
-    path: "/global-config",
+    path: "/global-config/:engineerId",
+    name: "GlobalConfig",
     component: () => import("@/views/modules/global-config/global-config.vue"),
     meta: { hidden: true },
   },

+ 3 - 0
src/store/modules/common.ts

@@ -13,6 +13,9 @@ export const useCommonStore = defineStore("commonStore", {
       icon: "home",
       route: "/main/home",
     },
+    pageSize: 9, // 首页每页显示的条数
+
+    currentProjectId: "", //在首页点击某一项的配置工程的时候使用
   }),
   persist: true,
 });

+ 7 - 1
src/views/main/components/menu.vue

@@ -1,7 +1,7 @@
 <script setup lang="ts">
 import { useCommonStoreHook } from "@/store";
 
-const { currentMenu } = toRefs(useCommonStoreHook());
+const { currentMenu, currentProjectId } = toRefs(useCommonStoreHook());
 
 interface MenuItem {
   name: string;
@@ -45,6 +45,12 @@ const menus = ref<MenuItem[]>([
 const router = useRouter();
 const handleMenuClick = (menu: MenuItem) => {
   if (menu.route != currentMenu.value.route) {
+    // 如果工程配置没有值,就不跳转,并提示   && !currentProjectId.value
+    if (menu.route === "/main/project-config") {
+      ElMessage.warning("请先在首页选择工程");
+      return;
+    }
+
     currentMenu.value = menu;
     router.push(menu.route);
   }

+ 4 - 3
src/views/modules/global-config/global-config.vue

@@ -11,13 +11,13 @@ import {
   globalDataDel,
   globalDataUpdate,
 } from "@/api/config";
-
-const activeName = ref("仪器配置");
-
 import configAddVue from "./components/ConfigAdd.vue";
 import globalAddVue from "./components/globalDataAdd.vue";
 import SecondHeader from "@/views/modules/conmon/SecondHeader.vue";
 
+const route = useRoute();
+
+const activeName = ref("仪器配置");
 const handleClick = (tab: TabsPaneContext, event: Event) => {
   // console.log(tab, event);
 };
@@ -88,6 +88,7 @@ const getglobalData = () => {
 onMounted?.(() => {
   getInstrumentConfig();
   getglobalData();
+  console.log("当前页面的engineerid", route.params.engineerId);
 });
 
 const configChildRef = ref();

+ 20 - 3
src/views/modules/home/home.vue

@@ -111,7 +111,7 @@
               </template>
             </el-popconfirm>
 
-            <span @click="showDetailsFun(item)">
+            <span @click="gotoConfigProject(item)">
               <svg-icon icon-class="homeIcon4" />
             </span>
             <span>
@@ -153,6 +153,10 @@ import {
   updateProject,
 } from "@/api/project";
 
+import { useCommonStoreHook } from "@/store";
+const { currentProjectId, currentMenu, pageSize } =
+  toRefs(useCommonStoreHook());
+
 const checkAll = ref(false);
 const isIndeterminate = ref(true);
 const checkedCities = ref([]);
@@ -224,13 +228,13 @@ const showDetailsFun = (row: any) => {
 
 // 获取列表数据
 const currentPage = ref(1);
-const pageSize = ref(9);
+
 const total = ref(0);
 const engineeringList = ref<VersionItem[]>([]);
 
 const handleSizeChange = (val: number) => {
-  pageSize.value = val;
   currentPage.value = 1;
+  pageSize.value = val;
   getEngineeringList();
 };
 const handleCurrentChange = (val: number) => {
@@ -272,6 +276,19 @@ const deleteConfirm = async (item) => {
   ElMessage.success("删除成功");
   getEngineeringList();
 };
+
+// 去到配置工程页面
+const router = useRouter();
+const gotoConfigProject = (project) => {
+  currentProjectId.value = project.id;
+
+  currentMenu.value = {
+    name: "工程配置",
+    icon: "project-config",
+    route: "/main/project-config",
+  };
+  router.push("/main/project-config");
+};
 </script>
 
 <style scoped lang="scss">

+ 23 - 25
src/views/modules/project-config/com/function-col.vue

@@ -23,31 +23,29 @@ const test = (data) => {
 <template>
   <div class="function-col">
     <TitleHeader> 添加功能模块</TitleHeader>
-    <el-collapse
-      v-model="activeNames"
-      @change="handleChange"
-      class="collapse-container"
-    >
-      <el-collapse-item
-        :name="funType.name"
-        v-for="(funType, index) in propertyData"
-        :key="funType.id"
-        :title="funType.name"
-      >
-        <div class="drag-container">
-          <div
-            class="drag-item"
-            v-for="(dragData, index) in funType.functions"
-            :key="index"
-            :draggable="true"
-            @dragstart="onDragStart($event, dragData)"
-            @click="test(dragData)"
-          >
-            {{ dragData?.data?.information?.functionName ?? "-" }}
-          </div>
-        </div>
-      </el-collapse-item>
-    </el-collapse>
+    <el-scrollbar class="collapse-container">
+      <el-collapse v-model="activeNames" @change="handleChange">
+        <el-collapse-item
+          :name="funType.name"
+          v-for="(funType, index) in propertyData"
+          :key="funType.id"
+          :title="funType.name"
+        >
+          <el-scrollbar class="drag-container">
+            <div
+              class="drag-item"
+              v-for="(dragData, index) in funType.functions"
+              :key="index"
+              :draggable="true"
+              @dragstart="onDragStart($event, dragData)"
+              @click="test(dragData)"
+            >
+              {{ dragData?.data?.information?.functionName ?? "-" }}
+            </div>
+          </el-scrollbar>
+        </el-collapse-item>
+      </el-collapse>
+    </el-scrollbar>
   </div>
 </template>
 

+ 65 - 17
src/views/modules/project-config/com/project-message.vue

@@ -1,15 +1,45 @@
 <script setup>
 import { propertyData } from "../configs/properites";
 import TitleHeader from "@/views/modules/project-config/com/titleHeader.vue";
+
+import { useCommonStoreHook } from "@/store";
+import { getProjectById, getTestProjectList } from "@/api/project/index";
+const { currentProjectId } = toRefs(useCommonStoreHook());
+
 const emits = defineEmits(["onClickItem"]);
 
-// 当点击了项目
-const handleClickItem = (item) => {
-  emits("onClickItem", item);
-};
 const router = useRouter();
 const goGlobalConfig = () => {
-  router.push({ path: "/global-config" });
+  router.push({
+    name: "GlobalConfig",
+    params: { engineerId: currentProjectId.value },
+  });
+};
+
+// 当前正在配置的项目信息
+const currentProject = ref();
+onMounted(() => {
+  getProjectById(currentProjectId.value).then((res) => {
+    currentProject.value = res.data;
+    toGetTestProjectList();
+  });
+});
+
+const testProjectList = ref([]);
+const currentSelectedTestProject = ref();
+const toGetTestProjectList = () => {
+  // 获取完配置工程信息后,获取测试项目列表
+  getTestProjectList({
+    engineeringId: currentProject.value.engineeringId,
+  }).then((res) => {
+    testProjectList.value = res.data ?? [];
+  });
+};
+// 当点击了项目
+const clickTestProjectItem = (item) => {
+  let data = JSON.parse(JSON.stringify(item));
+  emits("onClickItem", data);
+  currentSelectedTestProject.value = data;
 };
 </script>
 
@@ -19,22 +49,22 @@ const goGlobalConfig = () => {
 
     <div class="project-msg-item">
       <span class="text-l">产品:</span>
-      <span class="text-r">{{ "控制面板" }}</span>
+      <span class="text-r">{{ currentProject?.engineeringProductName }}</span>
       <span class="edit">
         <svg-icon icon-class="homeIcon2" />
       </span>
     </div>
     <div class="project-msg-item">
       <span class="text-l">工程类型:</span
-      ><span class="text-r">{{ "控制面板" }}</span>
+      ><span class="text-r">{{ currentProject?.engineeringType }}</span>
     </div>
     <div class="project-msg-item">
       <span class="text-l">版本:</span
-      ><span class="text-r">{{ "控制面板" }}</span>
+      ><span class="text-r">{{ currentProject?.engineeringVersion }}</span>
     </div>
     <div class="project-msg-item">
-      <span class="text-l">创建时间:</span
-      ><span class="text-r">{{ "控制面板" }}</span>
+      <!--      <span class="text-l">更新时间:</span>-->
+      <span class="text-r">{{ currentProject?.updated }}</span>
     </div>
 
     <div class="project-all-config" @click="goGlobalConfig">
@@ -54,11 +84,16 @@ const goGlobalConfig = () => {
       <el-scrollbar>
         <div
           class="project-list-item"
-          v-for="item in 20"
-          :key="index"
-          @click="handleClickItem(item)"
+          :class="[
+            item.id === currentSelectedTestProject?.id
+              ? 'selected-item'
+              : 'normal-item',
+          ]"
+          v-for="item in testProjectList"
+          :key="item.id"
+          @click="clickTestProjectItem(item)"
         >
-          {{ item }}
+          {{ item.projectName }}
         </div>
       </el-scrollbar>
     </div>
@@ -145,17 +180,30 @@ const goGlobalConfig = () => {
     overflow-y: auto;
     .project-list-item {
       cursor: pointer;
-      font-size: var(--hj-fs-12);
-      color: var(--hj-white-1);
+
       margin: 0 12px;
       margin-bottom: 12px;
       height: 36px;
       line-height: 36px;
       text-align: center;
-      background: rgba(59, 124, 255, 0.5);
+
       border-radius: 4px 4px 4px 4px;
       border: 1px solid #3b7cff;
     }
+
+    .normal-item {
+      background-color: transparent;
+      color: $hj-white-3;
+      font-weight: normal;
+      font-size: var(--hj-fs-12);
+    }
+
+    .selected-item {
+      background: rgba(59, 124, 255, 0.5);
+      color: $hj-white-1;
+      font-weight: bold;
+      font-size: var(--hj-fs-14);
+    }
   }
 }
 </style>