2023-06-15 20:13:46 +08:00
|
|
|
|
<template>
|
|
|
|
|
|
<div class="ma-content-block lg:flex justify-between p-4">
|
|
|
|
|
|
<div class="lg:w-full w-full lg:ml-4 mt-5 lg:mt-0">
|
|
|
|
|
|
<!-- CRUD组件 -->
|
|
|
|
|
|
<ma-crud :options="crudOptions" :columns="crudColumns"></ma-crud>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
</template>
|
|
|
|
|
|
|
|
|
|
|
|
<script setup lang="jsx">
|
|
|
|
|
|
import { ref } from "vue"
|
|
|
|
|
|
import { useRoute, useRouter } from "vue-router"
|
|
|
|
|
|
import problemApi from "@/api/project/problem"
|
|
|
|
|
|
const route = useRoute()
|
|
|
|
|
|
const router = useRouter()
|
|
|
|
|
|
const roundNumber = route.query.key.split("-")[0]
|
2023-06-19 19:51:12 +08:00
|
|
|
|
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]
|
2023-06-15 20:13:46 +08:00
|
|
|
|
const crudOptions = ref({
|
|
|
|
|
|
api: problemApi.getProblemList,
|
2023-08-03 18:42:18 +08:00
|
|
|
|
add: { show: true, api: problemApi.save },
|
|
|
|
|
|
edit: { show: true, api: problemApi.update },
|
|
|
|
|
|
delete: { show: true, api: problemApi.delete },
|
2023-06-15 20:13:46 +08:00
|
|
|
|
parameters: {
|
|
|
|
|
|
projectId: route.query.id,
|
|
|
|
|
|
round: roundNumber,
|
2023-06-19 19:51:12 +08:00
|
|
|
|
dut: dutNumber,
|
2023-06-15 20:13:46 +08:00
|
|
|
|
designDemand: designDemandNumber,
|
|
|
|
|
|
testDemand: testDemandNumber,
|
|
|
|
|
|
case: caseNumber
|
|
|
|
|
|
},
|
|
|
|
|
|
showIndex: false,
|
|
|
|
|
|
rowSelection: { showCheckedAll: true },
|
|
|
|
|
|
searchColNumber: 3,
|
2023-07-25 20:03:06 +08:00
|
|
|
|
tablePagination: false,
|
2023-06-15 20:13:46 +08:00
|
|
|
|
operationColumn: true,
|
2023-06-16 19:30:36 +08:00
|
|
|
|
scroll: { x: "100%", y: "100%" },
|
2023-06-15 20:13:46 +08:00
|
|
|
|
formOption: {
|
2023-06-16 19:30:36 +08:00
|
|
|
|
width: 1000,
|
|
|
|
|
|
layout: [
|
|
|
|
|
|
{
|
|
|
|
|
|
formType: "grid",
|
|
|
|
|
|
customClass: ["mt-0"],
|
|
|
|
|
|
cols: [
|
|
|
|
|
|
{ span: 12, formList: [{ dataIndex: "name" }] },
|
|
|
|
|
|
{ span: 12, formList: [{ dataIndex: "ident" }] }
|
|
|
|
|
|
]
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
formType: "grid",
|
|
|
|
|
|
customClass: ["ml-4"],
|
|
|
|
|
|
cols: [
|
|
|
|
|
|
{ span: 12, formList: [{ dataIndex: "status" }] },
|
|
|
|
|
|
{ span: 12, formList: [{ dataIndex: "closeMethod" }] }
|
|
|
|
|
|
]
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
formType: "grid",
|
|
|
|
|
|
customClass: ["ml-4"],
|
|
|
|
|
|
cols: [
|
|
|
|
|
|
{ span: 12, formList: [{ dataIndex: "grade" }] },
|
|
|
|
|
|
{ span: 12, formList: [{ dataIndex: "type" }] }
|
|
|
|
|
|
]
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
formType: "divider",
|
|
|
|
|
|
title: "问题详情"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
2023-06-19 19:51:12 +08:00
|
|
|
|
dataIndex: "operation"
|
2023-06-16 19:30:36 +08:00
|
|
|
|
},
|
|
|
|
|
|
{
|
2023-06-19 19:51:12 +08:00
|
|
|
|
dataIndex: "expect"
|
2023-06-16 19:30:36 +08:00
|
|
|
|
},
|
|
|
|
|
|
{
|
2023-06-19 19:51:12 +08:00
|
|
|
|
dataIndex: "result"
|
2023-06-16 19:30:36 +08:00
|
|
|
|
},
|
|
|
|
|
|
{
|
2023-06-19 19:51:12 +08:00
|
|
|
|
dataIndex: "rules"
|
2023-06-16 19:30:36 +08:00
|
|
|
|
},
|
|
|
|
|
|
{
|
2023-06-19 19:51:12 +08:00
|
|
|
|
dataIndex: "suggest"
|
2023-06-16 19:30:36 +08:00
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
formType: "divider",
|
|
|
|
|
|
title: "人员信息"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
formType: "grid",
|
|
|
|
|
|
cols: [
|
|
|
|
|
|
{ span: 12, formList: [{ dataIndex: "postPerson" }] },
|
|
|
|
|
|
{ span: 12, formList: [{ dataIndex: "postDate" }] }
|
|
|
|
|
|
]
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
formType: "grid",
|
|
|
|
|
|
cols: [
|
|
|
|
|
|
{ span: 12, formList: [{ dataIndex: "designerPerson" }] },
|
|
|
|
|
|
{ span: 12, formList: [{ dataIndex: "designDate" }] }
|
|
|
|
|
|
]
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
formType: "grid",
|
|
|
|
|
|
cols: [
|
|
|
|
|
|
{ span: 12, formList: [{ dataIndex: "verifyPerson" }] },
|
|
|
|
|
|
{ span: 12, formList: [{ dataIndex: "verifyDate" }] }
|
|
|
|
|
|
]
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
formType: "grid",
|
|
|
|
|
|
cols: [
|
|
|
|
|
|
{ span: 12, formList: [{ dataIndex: "revokePerson" }] },
|
|
|
|
|
|
{ span: 12, formList: [{ dataIndex: "revokeDate" }] }
|
|
|
|
|
|
]
|
2023-06-19 19:51:12 +08:00
|
|
|
|
}
|
2023-06-16 19:30:36 +08:00
|
|
|
|
]
|
2023-06-15 20:13:46 +08:00
|
|
|
|
}
|
|
|
|
|
|
})
|
|
|
|
|
|
const crudColumns = ref([
|
|
|
|
|
|
{
|
|
|
|
|
|
title: "名称",
|
|
|
|
|
|
align: "left",
|
|
|
|
|
|
search: true,
|
|
|
|
|
|
dataIndex: "name",
|
|
|
|
|
|
commonRules: [{ required: true, message: "名称是必填" }],
|
|
|
|
|
|
validateTrigger: "blur"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
title: "标识",
|
|
|
|
|
|
align: "center",
|
|
|
|
|
|
width: 140,
|
|
|
|
|
|
search: true,
|
|
|
|
|
|
dataIndex: "ident",
|
2023-06-16 19:30:36 +08:00
|
|
|
|
addDefaultValue: `PT_${route.query.ident}_`,
|
2023-06-15 20:13:46 +08:00
|
|
|
|
commonRules: [{ required: true, message: "标识是必填" }],
|
|
|
|
|
|
validateTrigger: "blur"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
title: "缺陷状态",
|
|
|
|
|
|
align: "center",
|
|
|
|
|
|
width: 80,
|
|
|
|
|
|
search: true,
|
|
|
|
|
|
dataIndex: "status",
|
|
|
|
|
|
formType: "radio",
|
|
|
|
|
|
addDefaultValue: "2",
|
|
|
|
|
|
commonRules: [{ required: true, message: "缺陷状态是必填" }],
|
|
|
|
|
|
dict: {
|
|
|
|
|
|
name: "problemStatu",
|
|
|
|
|
|
translation: true,
|
|
|
|
|
|
props: { label: "title", value: "key" },
|
|
|
|
|
|
tagColors: { 1: "green", 2: "blue", 3: "#FF7D00", 4: "red" }
|
|
|
|
|
|
}
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
title: "缺陷类型",
|
|
|
|
|
|
align: "center",
|
|
|
|
|
|
width: 80,
|
|
|
|
|
|
dataIndex: "type",
|
|
|
|
|
|
search: true,
|
|
|
|
|
|
addDefaultValue: "3",
|
|
|
|
|
|
formType: "radio",
|
|
|
|
|
|
commonRules: [{ required: true, message: "缺陷类型必选" }],
|
|
|
|
|
|
dict: {
|
|
|
|
|
|
name: "problemType",
|
|
|
|
|
|
translation: true,
|
|
|
|
|
|
props: { label: "title", value: "key" }
|
|
|
|
|
|
}
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
title: "缺陷等级",
|
|
|
|
|
|
align: "center",
|
|
|
|
|
|
width: 80,
|
|
|
|
|
|
dataIndex: "grade",
|
|
|
|
|
|
search: true,
|
|
|
|
|
|
addDefaultValue: "1",
|
|
|
|
|
|
formType: "radio",
|
|
|
|
|
|
commonRules: [{ required: true, message: "缺陷等级必填" }],
|
|
|
|
|
|
dict: {
|
|
|
|
|
|
name: "problemGrade",
|
|
|
|
|
|
translation: true,
|
|
|
|
|
|
props: { label: "title", value: "key" }
|
|
|
|
|
|
}
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
title: "闭环方式",
|
|
|
|
|
|
align: "center",
|
|
|
|
|
|
width: 150,
|
|
|
|
|
|
dataIndex: "closeMethod",
|
2023-06-16 19:30:36 +08:00
|
|
|
|
addDefaultValue: ["2"],
|
2023-06-15 20:13:46 +08:00
|
|
|
|
search: true,
|
2023-06-16 19:30:36 +08:00
|
|
|
|
formType: "checkbox",
|
2023-06-15 20:13:46 +08:00
|
|
|
|
dict: {
|
|
|
|
|
|
name: "closeMethod",
|
|
|
|
|
|
translation: true,
|
|
|
|
|
|
props: { label: "title", value: "key" }
|
|
|
|
|
|
},
|
|
|
|
|
|
customRender: ({ record }) => {
|
|
|
|
|
|
// 判断是否具有1:修改文档
|
|
|
|
|
|
if (!record.closeMethod.hasOwnProperty("0")) {
|
|
|
|
|
|
if (!record.closeMethod.hasOwnProperty("1")) {
|
2023-06-16 19:30:36 +08:00
|
|
|
|
return (
|
|
|
|
|
|
<a-tag size="small" bordered color="magenta">
|
|
|
|
|
|
还未闭环
|
|
|
|
|
|
</a-tag>
|
|
|
|
|
|
)
|
2023-06-15 20:13:46 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
const tagObj = []
|
|
|
|
|
|
for (let item in record.closeMethod) {
|
|
|
|
|
|
if (item === "0") {
|
2023-06-16 19:30:36 +08:00
|
|
|
|
tagObj.push(
|
|
|
|
|
|
<a-tag size="small" bordered color="blue">
|
|
|
|
|
|
修改文档
|
|
|
|
|
|
</a-tag>
|
|
|
|
|
|
)
|
2023-06-15 20:13:46 +08:00
|
|
|
|
} else if (item === "1") {
|
2023-06-16 19:30:36 +08:00
|
|
|
|
tagObj.push(
|
|
|
|
|
|
<a-tag size="small" bordered color="green">
|
|
|
|
|
|
修改程序
|
|
|
|
|
|
</a-tag>
|
|
|
|
|
|
)
|
2023-06-15 20:13:46 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|
2023-06-16 19:30:36 +08:00
|
|
|
|
return <a-space size="mini">{tagObj}</a-space>
|
2023-06-15 20:13:46 +08:00
|
|
|
|
}
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
2023-06-16 19:30:36 +08:00
|
|
|
|
title: "问题操作",
|
2023-06-15 20:13:46 +08:00
|
|
|
|
hide: true,
|
|
|
|
|
|
search: true,
|
|
|
|
|
|
dataIndex: "operation",
|
2023-08-11 19:26:34 +08:00
|
|
|
|
formType: "editor",
|
|
|
|
|
|
addDefaultValue: ""
|
2023-06-15 20:13:46 +08:00
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
title: "期望结果",
|
|
|
|
|
|
hide: true,
|
2023-08-11 19:26:34 +08:00
|
|
|
|
dataIndex: "expect",
|
|
|
|
|
|
addDefaultValue: ""
|
2023-06-15 20:13:46 +08:00
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
title: "问题结果",
|
|
|
|
|
|
hide: true,
|
|
|
|
|
|
dataIndex: "result",
|
2023-08-11 19:26:34 +08:00
|
|
|
|
formType: "editor",
|
|
|
|
|
|
addDefaultValue: ""
|
2023-06-15 20:13:46 +08:00
|
|
|
|
},
|
2023-06-16 19:30:36 +08:00
|
|
|
|
{
|
|
|
|
|
|
title: "违反规则",
|
|
|
|
|
|
hide: true,
|
2023-08-11 19:26:34 +08:00
|
|
|
|
dataIndex: "rules",
|
|
|
|
|
|
addDefaultValue: ""
|
2023-06-16 19:30:36 +08:00
|
|
|
|
},
|
2023-06-15 20:13:46 +08:00
|
|
|
|
{
|
|
|
|
|
|
title: "修改建议",
|
|
|
|
|
|
hide: true,
|
2023-08-11 19:26:34 +08:00
|
|
|
|
dataIndex: "suggest",
|
|
|
|
|
|
addDefaultValue: ""
|
2023-06-15 20:13:46 +08:00
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
title: "提单人",
|
|
|
|
|
|
dataIndex: "postPerson",
|
|
|
|
|
|
search: true,
|
|
|
|
|
|
formType: "select",
|
|
|
|
|
|
commonRules: [{ required: true, message: "提单人必填" }],
|
2023-07-21 16:08:08 +08:00
|
|
|
|
dict: { url: "system/user/list", translation: true, props: { label: "name", value: "name" } }
|
2023-06-15 20:13:46 +08:00
|
|
|
|
},
|
|
|
|
|
|
{
|
2023-06-16 19:30:36 +08:00
|
|
|
|
title: "提单日期",
|
2023-06-15 20:13:46 +08:00
|
|
|
|
hide: true,
|
2023-06-16 19:30:36 +08:00
|
|
|
|
dataIndex: "postDate",
|
|
|
|
|
|
formType: "date"
|
2023-06-15 20:13:46 +08:00
|
|
|
|
},
|
|
|
|
|
|
{
|
2023-06-16 19:30:36 +08:00
|
|
|
|
title: "设师上级",
|
2023-06-15 20:13:46 +08:00
|
|
|
|
hide: true,
|
|
|
|
|
|
dataIndex: "designerPerson",
|
2023-06-19 19:51:12 +08:00
|
|
|
|
commonRules: [{ required: true, message: "提单人必填" }]
|
2023-06-15 20:13:46 +08:00
|
|
|
|
},
|
|
|
|
|
|
{
|
2023-08-03 18:42:18 +08:00
|
|
|
|
title: "确认日期",
|
2023-06-15 20:13:46 +08:00
|
|
|
|
hide: true,
|
2023-06-16 19:30:36 +08:00
|
|
|
|
dataIndex: "designDate",
|
|
|
|
|
|
formType: "date"
|
2023-06-15 20:13:46 +08:00
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
title: "验证人",
|
|
|
|
|
|
hide: true,
|
|
|
|
|
|
dataIndex: "verifyPerson",
|
|
|
|
|
|
formType: "select",
|
|
|
|
|
|
commonRules: [{ required: true, message: "提单人必填" }],
|
2023-07-21 16:08:08 +08:00
|
|
|
|
dict: { url: "system/user/list", translation: true, props: { label: "name", value: "name" } }
|
2023-06-15 20:13:46 +08:00
|
|
|
|
},
|
|
|
|
|
|
{
|
2023-06-16 19:30:36 +08:00
|
|
|
|
title: "验证日期",
|
2023-06-15 20:13:46 +08:00
|
|
|
|
hide: true,
|
2023-06-16 19:30:36 +08:00
|
|
|
|
dataIndex: "verifyDate",
|
|
|
|
|
|
formType: "date"
|
2023-06-15 20:13:46 +08:00
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
title: "撤销人",
|
|
|
|
|
|
hide: true,
|
|
|
|
|
|
dataIndex: "revokePerson",
|
|
|
|
|
|
formType: "select",
|
|
|
|
|
|
commonRules: [{ required: true, message: "提单人必填" }],
|
2023-07-21 16:08:08 +08:00
|
|
|
|
dict: { url: "system/user/list", translation: true, props: { label: "name", value: "name" } }
|
2023-06-15 20:13:46 +08:00
|
|
|
|
},
|
|
|
|
|
|
{
|
2023-06-16 19:30:36 +08:00
|
|
|
|
title: "撤销日期",
|
2023-06-15 20:13:46 +08:00
|
|
|
|
hide: true,
|
2023-06-16 19:30:36 +08:00
|
|
|
|
dataIndex: "revokeDate",
|
|
|
|
|
|
formType: "date"
|
|
|
|
|
|
}
|
2023-06-15 20:13:46 +08:00
|
|
|
|
])
|
|
|
|
|
|
</script>
|
|
|
|
|
|
|
|
|
|
|
|
<style lang="less" scoped></style>
|