feat: 触控项目执行

This commit is contained in:
zhanghao 2026-02-04 16:21:09 +08:00
parent 12d6ba703e
commit 992195273a
5 changed files with 63 additions and 32 deletions

View File

@ -85,12 +85,12 @@ export const addValueProperty = (data, schemeId = '') => {
// 处理单个对象或对象数组 // 处理单个对象或对象数组
const processItem = (item, index, path) => { const processItem = (item, index, path) => {
// 根据类型设置默认值 // 根据类型设置默认值
item.value = item.name === 'schemeId' ? schemeId : ''; item.value = item.name === 'schemeId' ? schemeId : item.type.includes('array') ? '[0]' : item.type === 'number' ? 0 : item.type === 'boolean' ? false : '';
item.propPath = `${path}.${index}.` item.propPath = `${path}.${index}.`
if (item.type.includes('array') && !item.type.includes('object')) { // if (item.type.includes('array') && !item.type.includes('object')) {
const type = item.type.match(/<([^>]+)>/)[1] // const type = item.type.match(/<([^>]+)>/)[1]
item.children = [{ name: 'Array Item', type, value: '', propPath: item.propPath + '.0'}] // item.children = [{ name: 'Array Item', type, value: '', propPath: item.propPath + '.0'}]
} // }
// 递归处理子项 // 递归处理子项
if (item.children && item.children.length > 0) { if (item.children && item.children.length > 0) {
item.children = item.children.map((cItem, cIndex) => { item.children = item.children.map((cItem, cIndex) => {

View File

@ -46,6 +46,9 @@
<el-input-number v-if="row.type === 'number'" :controls="false" v-model="row.value" /> <el-input-number v-if="row.type === 'number'" :controls="false" v-model="row.value" />
<el-switch v-if="row.type === 'boolean'" v-model="row.value" /> <el-switch v-if="row.type === 'boolean'" v-model="row.value" />
</el-form-item> </el-form-item>
<el-form-item v-else-if="row.type !== 'object' && row.type.includes('array')" label="" :prop="`tableData${row.propPath}value`" :rules="row.required ? [{ required: true, message: '请输入变量名', trigger: 'blur' }] : []">
<el-input v-model="row.value" placeholder="请输入数组值,格式如:[1,2,3]" />
</el-form-item>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>

View File

@ -53,6 +53,9 @@
<el-input-number v-if="row.type === 'number'" :controls="false" v-model="row.value" /> <el-input-number v-if="row.type === 'number'" :controls="false" v-model="row.value" />
<el-switch v-if="row.type === 'boolean'" v-model="row.value" /> <el-switch v-if="row.type === 'boolean'" v-model="row.value" />
</el-form-item> </el-form-item>
<el-form-item v-else-if="row.type !== 'object' && row.type.includes('array')" label="" :prop="`formData.tableData.${pIndex}.config${row.propPath}value`" :rules="row.required ? [{ required: true, message: '请输入变量名', trigger: 'blur' }] : []">
<el-input v-model="row.value" placeholder="请输入数组值,格式如:[1,2,3]" />
</el-form-item>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>

View File

@ -181,9 +181,10 @@
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="功能选择" prop="testFuncs"> <el-form-item label="功能选择" prop="testFuncIds">
<el-select <el-select
v-model="form.testFuncs" v-model="form.testFuncIds"
:multiple="true"
style="width: 240px" style="width: 240px"
> >
<el-option <el-option
@ -237,7 +238,7 @@
/> />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="24">
<el-form-item label="项目描述" prop="remark"> <el-form-item label="项目描述" prop="remark">
<el-input <el-input
v-model="form.remark" v-model="form.remark"
@ -318,13 +319,13 @@
</div> </div>
</template> </template>
</el-dialog> </el-dialog>
</div>
<Run <Run
:drawer="executeOpen" :drawer="executeOpen"
@close="executeOpen = false" @close="executeOpen = false"
:projectId="executeProjectId" :projectId="executeProjectId"
/> />
</div>
</template> </template>
<script setup> <script setup>
@ -356,7 +357,7 @@ const data = reactive({
tester: null, tester: null,
planStart: null, planStart: null,
vehicleConfigId: null, vehicleConfigId: null,
testFuncs: null, testFuncIds: null,
indicatorId: null, indicatorId: null,
planEnd: null, planEnd: null,
sort: null, sort: null,
@ -378,7 +379,7 @@ const data = reactive({
planStart: [{ required: true, message: "请输入计划测试开始时间", trigger: "blur" }], planStart: [{ required: true, message: "请输入计划测试开始时间", trigger: "blur" }],
planEnd: [{ required: true, message: "请输入计划测试结束时间", trigger: "blur" }], planEnd: [{ required: true, message: "请输入计划测试结束时间", trigger: "blur" }],
vehicleConfigId: [{ required: true, message: "请选择车机版本", trigger: "blur" }], vehicleConfigId: [{ required: true, message: "请选择车机版本", trigger: "blur" }],
testFuncs: [{ required: true, message: "请选择功能", trigger: "blur" }], testFuncIds: [{ required: true, message: "请选择功能", trigger: "blur" }],
indicatorId: [{ required: true, message: "请选择评价指标", trigger: "blur" }], indicatorId: [{ required: true, message: "请选择评价指标", trigger: "blur" }],
sampleName: [{ required: true, message: "请输入样品名称", trigger: "blur" }], sampleName: [{ required: true, message: "请输入样品名称", trigger: "blur" }],
trademark: [{ required: true, message: "请输入样品商标", trigger: "blur" }], trademark: [{ required: true, message: "请输入样品商标", trigger: "blur" }],
@ -398,20 +399,32 @@ const { queryParams, form, rules } = toRefs(data);
const treeData = ref([]) const treeData = ref([])
const getTreeData = async () => { const getTreeData = async () => {
const res = await getTreeDataApi() try {
if (res) { const res = await getTreeDataApi();
treeData.value = res if (res) {
treeData.value = res;
}
} catch (err) {
console.error("获取树数据异常:", err);
ElMessage.error("加载车机版本树失败");
} }
} }
/** 查询语音交互-项目列表 */ /** 查询语音交互-项目列表 */
function getList() { function getList() {
getProjectList(queryParams.value).then(res => { getProjectList(queryParams.value)
if (res.code === 200) { .then(res => {
projectList.value = res.rows; if (res.code === 200) {
total.value = res.total; projectList.value = res.rows;
} total.value = res.total;
}) } else {
ElMessage.error(res.msg || "查询项目列表失败");
}
})
.catch(err => {
console.error("查询项目列表异常:", err);
ElMessage.error("网络异常,查询项目列表失败");
})
} }
// //
@ -429,7 +442,7 @@ function reset() {
planStart: null, planStart: null,
planEnd: null, planEnd: null,
vehicleConfigId: null, vehicleConfigId: null,
testFuncs: null, testFuncIds: null,
indicatorId: null, indicatorId: null,
sort: null, sort: null,
remark: null, remark: null,
@ -483,6 +496,7 @@ const submitForm = () => {
if (!valid) { if (!valid) {
return return
} }
form.value.testFuncIds = JSON.stringify(form.value.testFuncIds)
if (isAdd.value) { if (isAdd.value) {
addProject(form.value).then(res => { addProject(form.value).then(res => {
if (res.code === 200) { if (res.code === 200) {
@ -509,6 +523,7 @@ const handleUpdate = (row) => {
isAdd.value = false; isAdd.value = false;
title.value = "修改测试项目"; title.value = "修改测试项目";
form.value = row; form.value = row;
form.value.testFuncIds = form.value.testFuncIds.split(',').map(item => Number(item));
}; };
const handleDelete = (row) => { const handleDelete = (row) => {
@ -528,16 +543,23 @@ const handleDelete = (row) => {
const indicatorData = ref([]); const indicatorData = ref([]);
const getIndicatorData = () => { const getIndicatorData = () => {
getChildrenByParentIdWithLevelLimitApi(0,2, 1).then((res) => { getChildrenByParentIdWithLevelLimitApi(0,2, 1)
if (res.code === 200) { .then((res) => {
indicatorData.value = res.data || [] if (res.code === 200) {
} indicatorData.value = res.data || [];
}) } else {
ElMessage.error(res.msg || "加载评价指标失败");
}
})
.catch(err => {
console.error("获取评价指标异常:", err);
ElMessage.error("网络异常,加载评价指标失败");
});
} }
const funcIdOptions = ref([]) const funcIdOptions = ref([])
const vehicleConfigChange = (value) => { const vehicleConfigChange = (value) => {
form.value.testFuncs = null form.value.testFuncIds = null
funcIdOptions.value = [] funcIdOptions.value = []
getFunction({ getFunction({
pageNum: 1, pageNum: 1,

View File

@ -53,6 +53,9 @@
<el-input-number v-if="row.type === 'number'" :controls="false" v-model="row.value" /> <el-input-number v-if="row.type === 'number'" :controls="false" v-model="row.value" />
<el-switch v-if="row.type === 'boolean'" v-model="row.value" /> <el-switch v-if="row.type === 'boolean'" v-model="row.value" />
</el-form-item> </el-form-item>
<el-form-item v-else-if="row.type !== 'object' && row.type.includes('array')" label="" :prop="`formData.tableData.${pIndex}.config${row.propPath}value`" :rules="row.required ? [{ required: true, message: '请输入变量名', trigger: 'blur' }] : []">
<el-input v-model="row.value" placeholder="请输入数组值,格式如:[1,2,3]" />
</el-form-item>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>