2025-04-20 17:50:07 +08:00
|
|
|
|
import { defineComponent, ref } from "vue"
|
2024-12-30 09:50:38 +08:00
|
|
|
|
import { Message, TreeNodeData } from "@arco-design/web-vue"
|
|
|
|
|
|
import { useTreeDataStore } from "@/store"
|
|
|
|
|
|
import caseApi from "@/api/project/case"
|
|
|
|
|
|
import useOptions from "./useOptions"
|
|
|
|
|
|
import subFormHooks from "@/views/project/projPublicHooks/subFormHooks"
|
2025-04-20 17:50:07 +08:00
|
|
|
|
import useBeforeCancel from "@/views/project/projPublicHooks/useBeforeCancel"
|
|
|
|
|
|
import { cloneDeep } from "lodash-es"
|
2024-12-30 09:50:38 +08:00
|
|
|
|
|
|
|
|
|
|
const CaseSubForm = defineComponent({
|
|
|
|
|
|
name: "DemandSubFormForm",
|
|
|
|
|
|
setup(_, { expose }) {
|
|
|
|
|
|
// hook variable
|
|
|
|
|
|
const treeDataStore = useTreeDataStore()
|
|
|
|
|
|
const { title, formData, formRef, modalOptions, project_id, visible } = subFormHooks(
|
|
|
|
|
|
caseApi.update,
|
|
|
|
|
|
treeDataStore.updateCaseTreeData,
|
|
|
|
|
|
"80%"
|
|
|
|
|
|
)
|
|
|
|
|
|
// hooks
|
|
|
|
|
|
const { options, columnOptions } = useOptions(formRef) // **option里面变化**
|
|
|
|
|
|
// 双击打开回调
|
|
|
|
|
|
const open = async (nodeData: TreeNodeData) => {
|
|
|
|
|
|
// 请求数据
|
|
|
|
|
|
try {
|
|
|
|
|
|
const key = nodeData.key as string
|
|
|
|
|
|
// 设置表单名称
|
|
|
|
|
|
title.value = nodeData.title!
|
|
|
|
|
|
// 注意这里因为case接口原因,这里需要projectId!!!!!!!!!!!!!!!
|
|
|
|
|
|
const res = await caseApi.getCaseOne({ projectId: project_id, key }) // **API变化**
|
2025-04-20 17:50:07 +08:00
|
|
|
|
// 得到数据时候将beforeFormContent搞定
|
|
|
|
|
|
beforeFormContent.value = cloneDeep(res.data.testStep)
|
2024-12-30 09:50:38 +08:00
|
|
|
|
// 更新表单
|
|
|
|
|
|
formData.value = res.data // **属性变化**
|
|
|
|
|
|
formData.value.round = key.split("-")[0]
|
|
|
|
|
|
formData.value.dut = key.split("-")[1]
|
|
|
|
|
|
formData.value.designDemand = key.split("-")[2]
|
|
|
|
|
|
formData.value.testDemand = key.split("-")[3]
|
|
|
|
|
|
visible.value = true
|
|
|
|
|
|
} catch (e) {
|
|
|
|
|
|
Message.error("数据未获取到,请联系开发者")
|
|
|
|
|
|
visible.value = false
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
// out use
|
|
|
|
|
|
expose({ open })
|
|
|
|
|
|
|
2025-04-20 17:50:07 +08:00
|
|
|
|
// hook-判断是否更变内容关闭-只用于测试项和测试用例
|
|
|
|
|
|
const beforeFormContent = ref<any>(undefined)
|
|
|
|
|
|
const { handleBeforeCancel } = useBeforeCancel(formData, beforeFormContent, visible)
|
|
|
|
|
|
|
2024-12-30 09:50:38 +08:00
|
|
|
|
// Dom
|
|
|
|
|
|
return () => (
|
|
|
|
|
|
// 注意v-model:visible是不能放在对象解构的
|
2025-04-20 17:50:07 +08:00
|
|
|
|
<a-modal {...modalOptions} v-model:visible={visible.value} on-before-cancel={handleBeforeCancel}>
|
2024-12-30 09:50:38 +08:00
|
|
|
|
{{
|
|
|
|
|
|
title: () => <span>[设计需求]-{title.value}</span>,
|
|
|
|
|
|
default: () => (
|
|
|
|
|
|
<ma-form
|
|
|
|
|
|
ref={formRef}
|
|
|
|
|
|
v-model={formData.value}
|
|
|
|
|
|
options={options.value}
|
|
|
|
|
|
columns={columnOptions.value}
|
|
|
|
|
|
></ma-form>
|
|
|
|
|
|
)
|
|
|
|
|
|
}}
|
|
|
|
|
|
</a-modal>
|
|
|
|
|
|
)
|
|
|
|
|
|
}
|
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
|
|
export default CaseSubForm
|
|
|
|
|
|
// 组件类型导出
|
|
|
|
|
|
type CaseSubFormOrigin = InstanceType<typeof CaseSubForm>
|
|
|
|
|
|
export interface CaseSubFormInstance extends CaseSubFormOrigin {
|
|
|
|
|
|
open(nodeData: TreeNodeData): void
|
|
|
|
|
|
}
|