微调
This commit is contained in:
@@ -52,7 +52,9 @@
|
||||
label: i.name,
|
||||
tips: i.description
|
||||
}))
|
||||
|
||||
return [...unboundData, ...boundData]
|
||||
|
||||
}
|
||||
|
||||
const allData = computed(() => generateData())
|
||||
@@ -63,7 +65,7 @@ const filterMethod = (query: string, item: { label?: string }) => {
|
||||
}
|
||||
|
||||
// 打开弹窗,可能是新增,也可能是编辑
|
||||
const open = async (data: Plan.ReqPlan,) => {
|
||||
const open = async (data: Plan.ReqPlan) => {
|
||||
dialogVisible.value = true
|
||||
planData.value = data
|
||||
|
||||
|
||||
@@ -1,82 +1,91 @@
|
||||
<template>
|
||||
<template>
|
||||
<!-- 基础信息弹出框 -->
|
||||
<el-dialog :title="dialogTitle" v-model='dialogVisible' @close="close" v-bind="dialogSmall">
|
||||
<div>
|
||||
<el-form :model="formContent" ref='dialogFormRef' :rules='rules'>
|
||||
<el-form-item label="名称" prop="name" :label-width="100">
|
||||
<el-input v-model="formContent.name" placeholder="请输入名称" autocomplete="off"/>
|
||||
</el-form-item>
|
||||
<el-form-item label='检测源' prop='sourceIds' :label-width='100'>
|
||||
<el-select v-model="formContent.sourceIds" multiple collapse-tags placeholder="请选择检测源">
|
||||
<el-dialog :title="dialogTitle" v-model='dialogVisible' @close="close" v-bind="dialogBig">
|
||||
<div>
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="12">
|
||||
<el-form :model="formContent" ref='dialogFormRef' :rules='rules'>
|
||||
<el-form-item label="名称" prop="name" :label-width="100">
|
||||
<el-input v-model="formContent.name" placeholder="请输入名称" autocomplete="off"/>
|
||||
</el-form-item>
|
||||
<el-form-item label='检测源' prop='sourceIds' :label-width='100'>
|
||||
<el-select v-model="formContent.sourceIds" :multiple="selectByMode" collapse-tags placeholder="请选择检测源">
|
||||
<el-option
|
||||
v-for="(option, index) in pqSourceArray"
|
||||
:key="index"
|
||||
:label="option.label"
|
||||
:value="option.value"
|
||||
/>
|
||||
</el-select>
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="数据源" prop="datasourceIds" :label-width="100">
|
||||
<el-select v-model="formContent.datasourceIds" :multiple="selectByMode" collapse-tags placeholder="请选择数据源" autocomplete="off">
|
||||
<el-option
|
||||
v-for="item in dictStore.getDictData(dataSourceType)"
|
||||
:key="item.id"
|
||||
:label="item.name"
|
||||
:value="item.value || ''"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="数据源" prop="datasourceIds" :label-width="100">
|
||||
<el-select v-model="formContent.datasourceIds" multiple collapse-tags placeholder="请选择数据源" autocomplete="off" >
|
||||
<el-option
|
||||
v-for="item in dictStore.getDictData(dataSourceType)"
|
||||
:key="item.id"
|
||||
:label="item.name"
|
||||
:value="item.value || ''"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="检测脚本" prop="scriptId" :label-width="100">
|
||||
<el-select v-model="formContent.scriptId" placeholder="请选择检测脚本" autocomplete="off" >
|
||||
<el-option
|
||||
<el-select v-model="formContent.scriptId" placeholder="请选择检测脚本" autocomplete="off">
|
||||
<el-option
|
||||
v-for="(option, index) in pqScriptArray"
|
||||
:key="index"
|
||||
:label="option.label"
|
||||
:value="option.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="误差体系" prop="errorSysId" :label-width="100">
|
||||
<el-select v-model="formContent.errorSysId" placeholder="请选择误差体系" autocomplete="off">
|
||||
<el-option
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="误差体系" prop="errorSysId" :label-width="100">
|
||||
<el-select v-model="formContent.errorSysId" placeholder="请选择误差体系" autocomplete="off">
|
||||
<el-option
|
||||
v-for="(option, index) in pqErrorArray"
|
||||
:key="index"
|
||||
:label="option.label"
|
||||
:value="option.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label='被检设备' :label-width='100' prop='devIds'>
|
||||
<el-select v-model="formContent.devIds" multiple collapse-tags placeholder="请选择被检设备">
|
||||
<el-option
|
||||
v-for="(option, index) in pqDevArray"
|
||||
:key="index"
|
||||
:label="option.label"
|
||||
:value="option.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="守时检测" :label-width="100" prop='timeCheck'>
|
||||
<el-radio-group v-model="formContent.timeCheck" >
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="守时检测" :label-width="100" prop='timeCheck'>
|
||||
<el-radio-group v-model="formContent.timeCheck">
|
||||
<el-radio :value="1">是</el-radio>
|
||||
<el-radio :value="0">否</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-transfer
|
||||
v-model="value"
|
||||
filterable
|
||||
:filter-method="filterMethod"
|
||||
filter-placeholder="请输入内容搜索"
|
||||
:data="allData"
|
||||
:titles="['未绑定设备', '已绑定设备']">
|
||||
<template #default="{ option }">
|
||||
<el-tooltip :content="option.tips" placement="top" :show-after=1000>
|
||||
<span>{{ option.label }}</span>
|
||||
</el-tooltip>
|
||||
</template>
|
||||
</el-transfer>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</div>
|
||||
<template #footer>
|
||||
<div class="dialog-footer">
|
||||
<el-button @click='close()'>取 消</el-button>
|
||||
<el-button type="primary" @click='save()'>确 定</el-button>
|
||||
</div>
|
||||
<template #footer>
|
||||
<div class="dialog-footer">
|
||||
<el-button @click='close()'>取 消</el-button>
|
||||
<el-button type="primary" @click='save()' >确 定</el-button>
|
||||
</div>
|
||||
</template>
|
||||
</el-dialog>
|
||||
</template>
|
||||
</el-dialog>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import{ElMessage, type FormInstance,type FormItemRule}from'element-plus'
|
||||
import { defineProps, defineEmits, reactive,watch,ref, type Ref, computed } from 'vue';
|
||||
import { dialogSmall} from '@/utils/elementBind'
|
||||
import { dialogBig} from '@/utils/elementBind'
|
||||
import { type Plan } from '@/api/plan/interface';
|
||||
import { addPlan, updatePlan,getUnboundPqDevList,getBoundPqDevList,getPqErrSysList,getPqScriptList,getTestSourceList } from '@/api/plan/plan.ts'
|
||||
import { useDictStore } from '@/stores/modules/dict'
|
||||
@@ -89,6 +98,7 @@
|
||||
// 定义弹出组件元信息
|
||||
const dialogFormRef = ref()
|
||||
const mode = ref()
|
||||
const selectByMode = ref(true)
|
||||
const pqSourceList=ref<TestSource.ResTestSource[]>([])//获取指定模式下所有检测源
|
||||
const pqScriptList=ref<TestScript.ResTestScript[]>([])//获取指定模式下所有检测源
|
||||
const pqErrSysList=ref<ErrorSystem.ErrorSystemList[]>([])//获取指定模式下所有检测源
|
||||
@@ -98,6 +108,32 @@
|
||||
const pqScriptArray = ref<{ label: string; value: string; }[]>()
|
||||
const pqErrorArray = ref<{ label: string; value: string; }[]>()
|
||||
const pqDevArray = ref<{ label: string; value: string; }[]>()
|
||||
|
||||
|
||||
|
||||
const unboundPqDevList=ref<Device.ReqPqDevParams[]>([])//指定模式下所有未绑定的设备
|
||||
const boundPqDevList=ref<Device.ReqPqDevParams[]>([])//根据检测计划id查询出所有已绑定的设备
|
||||
const value = ref<string[]>([])
|
||||
const allData = computed(() => generateData())
|
||||
const generateData = () => {
|
||||
const unboundData = unboundPqDevList.value.map((i: Device.ReqPqDevParams) => ({
|
||||
key: i.id,
|
||||
label: i.name,
|
||||
//tips: i.description
|
||||
}))
|
||||
const boundData = boundPqDevList.value.map((i: Device.ReqPqDevParams) => ({
|
||||
key: i.id,
|
||||
label: i.name,
|
||||
//tips: i.description
|
||||
}))
|
||||
return [...unboundData, ...boundData]
|
||||
}
|
||||
|
||||
const filterMethod = (query: string, item: { label?: string }) => {
|
||||
return item.label?.toLowerCase().includes(query.toLowerCase()) ?? false
|
||||
}
|
||||
|
||||
|
||||
function useMetaInfo() {
|
||||
const dialogVisible = ref(false)
|
||||
const titleType = ref('add')
|
||||
@@ -120,7 +156,7 @@
|
||||
errorSysName:'',
|
||||
sourceName:'',
|
||||
devIds:[],
|
||||
sourceIds:[],
|
||||
sourceIds:'',
|
||||
datasourceIds:'',
|
||||
})
|
||||
return { dialogVisible, titleType, formContent }
|
||||
@@ -150,7 +186,7 @@
|
||||
errorSysName:'',
|
||||
sourceName:'',
|
||||
devIds:[],
|
||||
sourceIds:[],
|
||||
sourceIds:'',
|
||||
datasourceIds:'',
|
||||
}
|
||||
)
|
||||
@@ -188,18 +224,44 @@ const rules: Ref<Record<string, Array<FormItemRule>>> = ref({
|
||||
try {
|
||||
dialogFormRef.value?.validate(async (valid: boolean) => {
|
||||
if (valid) {
|
||||
formContent.devIds = value.value
|
||||
// 将 formContent.devIds 转换为 ReqPqDevParams 数组
|
||||
boundPqDevList.value = pqDevList.value
|
||||
.filter(device => formContent.devIds.includes(device.id))
|
||||
.map(device => ({
|
||||
id: device.id,
|
||||
name: device.name,
|
||||
devType: device.devType,
|
||||
createTime: device.createDate,
|
||||
pattern: device.pattern,
|
||||
pageNum: 1,
|
||||
pageSize: 10
|
||||
}));
|
||||
|
||||
console.log('保持',formContent.devIds)
|
||||
if (formContent.id) {
|
||||
await updatePlan(formContent);
|
||||
if( mode.value === '比对式'){
|
||||
await updatePlan(formContent)
|
||||
}else{
|
||||
await updatePlan({...formContent,'sourceIds':[formContent.sourceIds],'datasourceIds':[formContent.datasourceIds]});
|
||||
}
|
||||
ElMessage.success({ message: `${dialogTitle.value}成功!` })
|
||||
console.log('保存完成后还有吗',boundPqDevList)
|
||||
console.log('保存完成后还有吗1',formContent.devIds)
|
||||
console.log('保存完成后还有吗2',unboundPqDevList)
|
||||
} else {
|
||||
// 新增需要把设备模式转成字典ID
|
||||
const patternItem = dictStore.getDictData('Pattern').find(item => item.name === formContent.pattern);
|
||||
if (patternItem) {
|
||||
formContent.pattern = patternItem.id;
|
||||
}
|
||||
await addPlan(formContent);
|
||||
if( mode.value === '比对式'){
|
||||
await addPlan(formContent);
|
||||
}else{
|
||||
await addPlan({...formContent,'sourceIds':[formContent.sourceIds],'datasourceIds':[formContent.datasourceIds]});
|
||||
}
|
||||
ElMessage.success({ message: `${dialogTitle.value}成功!` })
|
||||
}
|
||||
}
|
||||
close()
|
||||
// 刷新表格
|
||||
await props.refreshTable!()
|
||||
@@ -225,7 +287,7 @@ const open = async (sign: string,
|
||||
dialogVisible.value = true
|
||||
|
||||
const pqSource_Result = await getTestSourceList(data);
|
||||
pqSourceList.value = pqSource_Result.data as TestSource.ResTestSource[];
|
||||
pqSourceList.value = pqSource_Result.data as TestSource.ResTestSource[];
|
||||
const PqScript_Result = await getPqScriptList(data);
|
||||
pqScriptList.value = PqScript_Result.data as TestScript.ResTestScript[];
|
||||
const PqErrSys_Result = await getPqErrSysList();
|
||||
@@ -243,22 +305,73 @@ const open = async (sign: string,
|
||||
{
|
||||
const pqDevList_Result = await getUnboundPqDevList(data);
|
||||
pqDevList.value = pqDevList_Result.data as Device.ResPqDev[];
|
||||
// 初始化 boundPqDevList 为空数组
|
||||
unboundPqDevList.value = pqDevList.value.map((item) => ({
|
||||
id: item.id,
|
||||
name: item.name,
|
||||
devType: item.devType,
|
||||
createTime: item.createDate,
|
||||
pattern: item.pattern,
|
||||
pageNum: 1,
|
||||
pageSize: 10
|
||||
}));
|
||||
boundPqDevList.value = [];
|
||||
}else{//编辑时先给表单赋值(这会没接收被检设备),需要手动再给被检设备复制后整体表单赋值
|
||||
const boundPqDevList_Result = await getBoundPqDevList({ 'planId': data.id });
|
||||
const unboundPqDevList_Result = await getUnboundPqDevList(data);
|
||||
|
||||
const boundData = Array.isArray(boundPqDevList_Result.data) ? boundPqDevList_Result.data : [];
|
||||
const unboundData = Array.isArray(unboundPqDevList_Result.data) ? unboundPqDevList_Result.data : [];
|
||||
|
||||
console.log('编辑boundData', boundData)
|
||||
pqDevList.value = [...boundData,...unboundData] as Device.ResPqDev[];
|
||||
formContent.devIds = boundData.map(i => i.id );// 已绑定设备id集合
|
||||
|
||||
Object.assign(formContent,{ ...data })
|
||||
//设备绑定显示
|
||||
unboundPqDevList.value = unboundPqDevList_Result.data as Device.ReqPqDevParams[];
|
||||
boundPqDevList.value = boundPqDevList_Result.data as Device.ReqPqDevParams[];
|
||||
|
||||
console.log('编辑打开时', formContent.devIds)
|
||||
}
|
||||
|
||||
pqToArray();//将对象转为数组
|
||||
|
||||
if( mode.value != '比对式'){
|
||||
selectByMode.value = false
|
||||
// 将 formContent.sourceIds 从数组转换为字符串
|
||||
if (Array.isArray(formContent.sourceIds)) {
|
||||
formContent.sourceIds = formContent.sourceIds.join(',');
|
||||
}
|
||||
// 将 formContent.sourceIds 从数组转换为字符串
|
||||
if (Array.isArray(formContent.datasourceIds)) {
|
||||
formContent.datasourceIds = formContent.datasourceIds.join(',');
|
||||
}
|
||||
}
|
||||
|
||||
// //设备绑定显示
|
||||
// const pqDevList_Result1 = await getUnboundPqDevList(data);
|
||||
// unboundPqDevList.value = pqDevList_Result1.data as Device.ReqPqDevParams[];
|
||||
|
||||
// const pqDevList_Result2 = await getBoundPqDevList({'planId': data.id});
|
||||
// boundPqDevList.value = pqDevList_Result2.data as Device.ReqPqDevParams[];
|
||||
|
||||
// value.value = boundPqDevList.value.map((i: { id: { toString: () => any } }) => i.id.toString());
|
||||
// console.log('1245',value.value)
|
||||
//设备绑定显示
|
||||
// if(sign == 'add') {
|
||||
|
||||
// } else {
|
||||
|
||||
// }
|
||||
|
||||
value.value = boundPqDevList.value.map((i: { id: { toString: () => any } }) => i.id.toString());
|
||||
console.log('1245',value.value)
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
function pqToArray() {
|
||||
const sourceArray1 = Array.isArray(pqSourceList.value) ? pqSourceList.value : []
|
||||
// 将 pqSource_Result 转换成 { label, value } 数组
|
||||
@@ -309,7 +422,7 @@ const props = defineProps<{
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
:deep(.dialog-small .el-dialog__body){
|
||||
max-height: 330px !important;
|
||||
}
|
||||
// :deep(.dialog-small .el-dialog__body){
|
||||
// max-height: 330px !important;
|
||||
// }
|
||||
</style>
|
||||
@@ -21,7 +21,7 @@
|
||||
<template #operation='scope'>
|
||||
<el-button type='primary' link :icon='EditPen' @click="openDialog('edit',scope.row)">编辑</el-button>
|
||||
<el-button type='primary' link :icon='Delete' @click='handleDelete(scope.row)'>删除</el-button>
|
||||
<el-button type='primary' link :icon='List' @click='showDeviceOpen(scope.row)'>设备绑定</el-button>
|
||||
<!-- <el-button type='primary' link :icon='List' @click='showDeviceOpen(scope.row)'>设备绑定</el-button> -->
|
||||
</template>
|
||||
</ProTable>
|
||||
</div>
|
||||
@@ -32,8 +32,8 @@
|
||||
<ErrorStandardPopup :refresh-table='proTable?.getTableList' ref="errorStandardPopup"/>
|
||||
<!-- 查看检测源 -->
|
||||
<TestSourcePopup :refresh-table='proTable?.getTableList' ref="testSourcePopup"/>
|
||||
<!-- 查看设备绑定 -->
|
||||
<DevTransfer :refresh-table='proTable?.getTableList' ref='devTransferPopup'/>
|
||||
<!-- 查看设备绑定
|
||||
<DevTransfer :refresh-table='proTable?.getTableList' ref='devTransferPopup'/> -->
|
||||
|
||||
</template>
|
||||
|
||||
@@ -225,7 +225,7 @@ const columns = reactive<ColumnProps<Plan.ReqPlan>[]>([
|
||||
)
|
||||
},
|
||||
},
|
||||
{ prop: 'operation', label: '操作', fixed: 'right', width: 250 },
|
||||
{ prop: 'operation', label: '操作', fixed: 'right', width: 200 },
|
||||
])
|
||||
|
||||
const handleSourceClicked = (id: string) => {
|
||||
|
||||
Reference in New Issue
Block a user