From fc5d2c44ea3607a75015733b55874ce5beeadb4a Mon Sep 17 00:00:00 2001
From: ks3356143 <314298729@qq.com>
Date: Mon, 19 Jun 2023 19:51:12 +0800
Subject: [PATCH] 54321
---
cdTMP/src/api/project/dut.js | 15 ++++
cdTMP/src/api/project/project.js | 15 ++++
cdTMP/src/layout/components/navbar.vue | 2 +-
cdTMP/src/layout/project-layout.vue | 68 +++++++++++----
cdTMP/src/router/index.js | 11 +++
cdTMP/src/store/index.js | 10 +--
cdTMP/src/store/project/treeData.js | 27 ++++++
cdTMP/src/views/project/case/index.vue | 22 ++---
.../src/views/project/design-demand/index.vue | 10 ++-
cdTMP/src/views/project/dut/index.vue | 83 +++++++++++++++++++
cdTMP/src/views/project/round/index.vue | 65 ++++++++++-----
cdTMP/src/views/project/testDemand/index.vue | 6 +-
12 files changed, 275 insertions(+), 59 deletions(-)
create mode 100644 cdTMP/src/api/project/dut.js
create mode 100644 cdTMP/src/store/project/treeData.js
create mode 100644 cdTMP/src/views/project/dut/index.vue
diff --git a/cdTMP/src/api/project/dut.js b/cdTMP/src/api/project/dut.js
new file mode 100644
index 0000000..187eed2
--- /dev/null
+++ b/cdTMP/src/api/project/dut.js
@@ -0,0 +1,15 @@
+import { request } from "@/api/request"
+
+export default {
+ /**
+ * 根据项目id、round信息,请求dut
+ * @returns dut数据
+ */
+ getDutList(params = {}) {
+ return request({
+ url: `project/getDutList`,
+ method: "get",
+ params
+ })
+ }
+}
diff --git a/cdTMP/src/api/project/project.js b/cdTMP/src/api/project/project.js
index 6f5f2bd..c07c965 100644
--- a/cdTMP/src/api/project/project.js
+++ b/cdTMP/src/api/project/project.js
@@ -11,6 +11,21 @@ export default {
method: "get"
})
},
+ /**
+ * 根据项目名、树节点等级和key查找被测件
+ * @returns 被测件
+ */
+ getDutInfo(projectId, key, level) {
+ return request({
+ url: `project/getDutInfo`,
+ method: "get",
+ params: {
+ projectId: projectId,
+ key: key,
+ level: level
+ }
+ })
+ },
/**
* 根据项目名、树节点等级和key查找设计需求
* @returns 设计需求树状节点信息
diff --git a/cdTMP/src/layout/components/navbar.vue b/cdTMP/src/layout/components/navbar.vue
index 16642bc..2d98c23 100644
--- a/cdTMP/src/layout/components/navbar.vue
+++ b/cdTMP/src/layout/components/navbar.vue
@@ -14,7 +14,7 @@
- {{ title }}
+ 项目名称:{{ title }}
diff --git a/cdTMP/src/layout/project-layout.vue b/cdTMP/src/layout/project-layout.vue
index 4f8f356..c90b2a5 100644
--- a/cdTMP/src/layout/project-layout.vue
+++ b/cdTMP/src/layout/project-layout.vue
@@ -8,8 +8,8 @@
-
- 搜索
+
+ 搜索
增加轮次
@@ -25,8 +25,7 @@
showLine
ref="treeRef"
border
- :default-expand-selected="true"
- :default-selected-keys="[route.query.key]"
+ :default-selected-keys="[currentNode ? currentNode : route.query.key]"
>
@@ -47,67 +46,108 @@ import PageLayout from "@/layout/page-layout.vue"
import projectApi from "@/api/project/project"
import { useRoute } from "vue-router"
import { useRouter } from "vue-router"
+import { useTreeDataStore } from "@/store"
+import { storeToRefs } from "pinia"
// 缩小后的menu菜单
const drawerVisible = ref(false)
provide("toggleDrawerMenu", () => {
drawerVisible.value = !drawerVisible.value
})
+// 搜索绑定与搜索按钮点击
+const searchKey = ref("")
+const handleSearchTreeDataClick = () => {
+ const loop = (itemdata) => {
+ const result = []
+ itemdata.forEach((item) => {
+ if (item.title.indexOf(searchKey.value) > -1) {
+ result.push({ ...item })
+ } else if (item.children) {
+ const filterdata = loop(item.children)
+ if (filterdata.length) {
+ result.push({
+ ...item,
+ children: filterdata
+ })
+ }
+ }
+ })
+ return result
+ }
+ // 返回过滤后的treeData
+ // treeDataStore.originTreeData
+ if (searchKey.value) {
+ treeData.value = loop(treeDataStore.treeData)
+ } else {
+ treeData.value = treeDataStore.originTreeData
+ }
+}
// 树状
/// 初始化round轮次数据
+const treeDataStore = useTreeDataStore()
const route = useRoute()
const router = useRouter()
const treeRef = ref()
-const treeData = ref([])
+const { treeData, currentNode } = storeToRefs(treeDataStore)
const projectInfo = ref({ ...route.query })
const projectId = ref(route.query.projectId)
onMounted(async () => {
- const roundData = await projectApi.getRoundInfo(projectId)
- treeData.value = roundData
+ treeDataStore.initTreeData(projectId)
})
/// 点击树状节点-参数1:节点数组,参数2:树node对象
const pointNode = (value, data) => {
- console.log(data.node)
+ console.log(data.node);
if (data.node.level === "0") {
router.push({ name: "round", query: { ...projectInfo.value, key: data.node.key } })
}
if (data.node.level === "1") {
- router.push({ name: "designDemand", query: { ...projectInfo.value, key: data.node.key } })
+ router.push({ name: "dut", query: { ...projectInfo.value, key: data.node.key } })
}
if (data.node.level === "2") {
- router.push({ name: "testDemand", query: { ...projectInfo.value, key: data.node.key } })
+ router.push({ name: "designDemand", query: { ...projectInfo.value, key: data.node.key } })
}
if (data.node.level === "3") {
- router.push({ name: "case", query: { ...projectInfo.value, key: data.node.key } })
+ router.push({ name: "testDemand", query: { ...projectInfo.value, key: data.node.key } })
}
if (data.node.level === "4") {
+ router.push({ name: "case", query: { ...projectInfo.value, key: data.node.key } })
+ }
+ if (data.node.level === "5") {
router.push({ name: "problem", query: { ...projectInfo.value, key: data.node.key } })
}
+ treeDataStore.setCurrentNode(data.node.key)
}
/// 动态加载函数-参数1:树node对象
const loadMore = (nodeData) => {
console.log("动态加载的节点为:", nodeData) // 输出点击节点的key,以及添加上去的level属性
if (nodeData.level == "0") {
return new Promise(async (resolve) => {
- const res = await projectApi.getDemandInfo(projectInfo.value.id, nodeData.key, nodeData.level)
+ const res = await projectApi.getDutInfo(projectInfo.value.id, nodeData.key, nodeData.level)
nodeData.children = res
resolve()
})
}
if (nodeData.level == "1") {
return new Promise(async (resolve) => {
- const res = await projectApi.getTestInfo(projectInfo.value.id, nodeData.key, nodeData.level)
+ const res = await projectApi.getDemandInfo(projectInfo.value.id, nodeData.key, nodeData.level)
nodeData.children = res
resolve()
})
}
if (nodeData.level == "2") {
return new Promise(async (resolve) => {
- const res = await projectApi.getCaseInfo(projectInfo.value.id, nodeData.key, nodeData.level)
+ const res = await projectApi.getTestInfo(projectInfo.value.id, nodeData.key, nodeData.level)
nodeData.children = res
resolve()
})
}
if (nodeData.level == "3") {
+ return new Promise(async (resolve) => {
+ const res = await projectApi.getCaseInfo(projectInfo.value.id, nodeData.key, nodeData.level)
+ nodeData.children = res
+ resolve()
+ })
+ }
+ if (nodeData.level == "4") {
return new Promise(async (resolve) => {
const res = await projectApi.getProblemInfo(projectInfo.value.id, nodeData.key, nodeData.level)
nodeData.children = res
diff --git a/cdTMP/src/router/index.js b/cdTMP/src/router/index.js
index 0de3de0..b18907f 100644
--- a/cdTMP/src/router/index.js
+++ b/cdTMP/src/router/index.js
@@ -44,6 +44,17 @@ const router = createRouter({
icon: "icon-arrow-right"
}
},
+ {
+ path: "dut",
+ name: "dut",
+ component: () => import("@/views/project/dut/index.vue"),
+ meta: {
+ requiresAuth: true,
+ roles: ["*"],
+ locale: "被测件信息",
+ icon: "icon-arrow-right"
+ }
+ },
{
path: "designDemand",
name: "designDemand",
diff --git a/cdTMP/src/store/index.js b/cdTMP/src/store/index.js
index 134b54b..0fe6716 100644
--- a/cdTMP/src/store/index.js
+++ b/cdTMP/src/store/index.js
@@ -6,15 +6,9 @@ import useTabBarStore from "./modules/tab-bar"
import useFormStore from "./modules/form"
import useKeepAliveStore from "./modules/keepAlive"
import useTagStore from "./modules/tag"
+import useTreeDataStore from "./project/treeData"
const pinia = createPinia()
-export {
- useUserStore,
- useAppStore,
- useTabBarStore,
- useFormStore,
- useKeepAliveStore,
- useTagStore,
-}
+export { useUserStore, useAppStore, useTabBarStore, useFormStore, useKeepAliveStore, useTagStore,useTreeDataStore }
export default pinia
diff --git a/cdTMP/src/store/project/treeData.js b/cdTMP/src/store/project/treeData.js
new file mode 100644
index 0000000..6cbdc5e
--- /dev/null
+++ b/cdTMP/src/store/project/treeData.js
@@ -0,0 +1,27 @@
+import { defineStore } from "pinia"
+import projectApi from "@/api/project/project"
+
+const useTreeDataStore = defineStore("treeDataStore", {
+ state: () => {
+ return {
+ treeData: [],
+ originTreeData: [],
+ currentNode: undefined
+ }
+ },
+ actions: {
+ // 不能使用箭头函数,无法绑定this
+ async initTreeData(projectId) {
+ if (this.treeData.length === 0) {
+ const roundData = await projectApi.getRoundInfo(projectId)
+ this.treeData = roundData
+ this.originTreeData = roundData
+ }
+ },
+ setCurrentNode(nodeKey) {
+ this.currentNode = nodeKey
+ }
+ }
+})
+
+export default useTreeDataStore
diff --git a/cdTMP/src/views/project/case/index.vue b/cdTMP/src/views/project/case/index.vue
index 156053b..c6472c7 100644
--- a/cdTMP/src/views/project/case/index.vue
+++ b/cdTMP/src/views/project/case/index.vue
@@ -14,14 +14,16 @@ import problemApi from "@/api/project/problem"
const route = useRoute()
const router = useRouter()
const roundNumber = route.query.key.split("-")[0]
-const designDemandNumber = route.query.key.split("-")[1]
-const testDemandNumber = route.query.key.split("-")[2]
-const caseNumber = route.query.key.split("-")[3]
+const dutNumber = route.query.key.split("-")[1]
+const designDemandNumber = route.query.key.split("-")[2]
+const testDemandNumber = route.query.key.split("-")[3]
+const caseNumber = route.query.key.split("-")[4]
const crudOptions = ref({
api: problemApi.getProblemList,
parameters: {
projectId: route.query.id,
round: roundNumber,
+ dut: dutNumber,
designDemand: designDemandNumber,
testDemand: testDemandNumber,
case: caseNumber
@@ -67,19 +69,19 @@ const crudOptions = ref({
title: "问题详情"
},
{
- dataIndex:"operation"
+ dataIndex: "operation"
},
{
- dataIndex:"expect"
+ dataIndex: "expect"
},
{
- dataIndex:"result"
+ dataIndex: "result"
},
{
- dataIndex:"rules"
+ dataIndex: "rules"
},
{
- dataIndex:"suggest"
+ dataIndex: "suggest"
},
{
formType: "divider",
@@ -112,7 +114,7 @@ const crudOptions = ref({
{ span: 12, formList: [{ dataIndex: "revokePerson" }] },
{ span: 12, formList: [{ dataIndex: "revokeDate" }] }
]
- },
+ }
]
}
})
@@ -270,7 +272,7 @@ const crudColumns = ref([
title: "设师上级",
hide: true,
dataIndex: "designerPerson",
- commonRules: [{ required: true, message: "提单人必填" }],
+ commonRules: [{ required: true, message: "提单人必填" }]
},
{
title: "提单日期",
diff --git a/cdTMP/src/views/project/design-demand/index.vue b/cdTMP/src/views/project/design-demand/index.vue
index 82fd61e..d4318fa 100644
--- a/cdTMP/src/views/project/design-demand/index.vue
+++ b/cdTMP/src/views/project/design-demand/index.vue
@@ -15,13 +15,15 @@ const route = useRoute()
const router = useRouter()
// 根据传参获取key,分别为轮次、设计需求的key
const roundNumber = route.query.key.split("-")[0]
-const designDemandNumber = route.query.key.split("-")[1]
+const dutNumber = route.query.key.split("-")[0]
+const designDemandNumber = route.query.key.split("-")[2]
// crud组件
const crudOptions = ref({
api: testDemandApi.getTestDemandList,
parameters: {
projectId: route.query.id,
round: roundNumber,
+ dut: dutNumber,
designDemand: designDemandNumber
},
showIndex: false,
@@ -90,7 +92,7 @@ const crudColumns = ref([
{
title: "充分条件",
hide: true,
- addDefaultValue:"覆盖需求相关功能",
+ addDefaultValue: "覆盖需求相关功能",
dataIndex: "adequacy",
commonRules: [{ required: true, message: "充分性描述必填" }]
},
@@ -108,7 +110,7 @@ const crudColumns = ref([
{
title: "前提条件",
hide: true,
- addDefaultValue:"软件正常运行,外部接口通信正常",
+ addDefaultValue: "软件正常运行,外部接口通信正常",
dataIndex: "premise",
commonRules: [{ required: true, message: "前提条件必填" }]
},
@@ -121,7 +123,7 @@ const crudColumns = ref([
{
title: "测试内容",
hide: true,
- dataIndex:"testContent",
+ dataIndex: "testContent",
commonRules: [{ required: true, message: "测试内容必填" }],
formType: "children-form",
type: "table",
diff --git a/cdTMP/src/views/project/dut/index.vue b/cdTMP/src/views/project/dut/index.vue
new file mode 100644
index 0000000..fe2d421
--- /dev/null
+++ b/cdTMP/src/views/project/dut/index.vue
@@ -0,0 +1,83 @@
+
+
+
+
+
+
+
diff --git a/cdTMP/src/views/project/round/index.vue b/cdTMP/src/views/project/round/index.vue
index c7cf6f8..5c085d3 100644
--- a/cdTMP/src/views/project/round/index.vue
+++ b/cdTMP/src/views/project/round/index.vue
@@ -10,13 +10,13 @@
diff --git a/cdTMP/src/views/project/testDemand/index.vue b/cdTMP/src/views/project/testDemand/index.vue
index e871dfc..a93a683 100644
--- a/cdTMP/src/views/project/testDemand/index.vue
+++ b/cdTMP/src/views/project/testDemand/index.vue
@@ -14,14 +14,16 @@ import caseApi from "@/api/project/case"
const route = useRoute()
const router = useRouter()
const roundNumber = route.query.key.split("-")[0]
-const designDemandNumber = route.query.key.split("-")[1]
-const testDemandNumber = route.query.key.split("-")[2]
+const dutNumber = route.query.key.split("-")[1]
+const designDemandNumber = route.query.key.split("-")[2]
+const testDemandNumber = route.query.key.split("-")[3]
// crud设置
const crudOptions = ref({
api: caseApi.getCaseList,
parameters: {
projectId: route.query.id,
round: roundNumber,
+ dut: dutNumber,
designDemand: designDemandNumber,
testDemand: testDemandNumber
},