From cbb23429b8beed72b58cbb57f9b3c56a0fb2b5d2 Mon Sep 17 00:00:00 2001 From: 马宇豪 <978517621@qq.com> Date: 星期五, 09 五月 2025 13:31:26 +0800 Subject: [PATCH] 修改 --- src/views/experiment/project/components/selectEquipment.vue | 81 ++++++++++++++++++++++++++++++---------- 1 files changed, 60 insertions(+), 21 deletions(-) diff --git a/src/views/experiment/project/components/selectEquipment.vue b/src/views/experiment/project/components/selectEquipment.vue index c86e11f..9b8321f 100644 --- a/src/views/experiment/project/components/selectEquipment.vue +++ b/src/views/experiment/project/components/selectEquipment.vue @@ -1,16 +1,16 @@ <template> <tr class="m-color b-font" style="text-align: center">实验所用的仪器/设备</tr> <tr> - <td class="w-16 m-color">设备名称</td> + <td class="w-16 m-color required">设备名称</td> <td class="w-16 m-color">编号</td> - <td class="w-16 m-color">设备功率</td> + <td class="w-16 m-color">额定功率</td> <td class="w-16 m-color">是否特种</td> - <td class="w-16 m-color">设备数量</td> + <td class="w-16 m-color required">设备数量</td> <td class="w-16 m-color">操作</td> </tr> <tr v-for="(item,index) in selectEquipmentState.equipmentList" :key="index"> <td class="w-16"> - <el-select :disabled="selectEquipmentState.disabled" filterable v-model="item.deviceId" @change="giveOtherEquipmentValue($event, index)"> + <el-select :disabled="selectEquipmentState.disabled" filterable v-model="item.deviceId" @change="giveOtherEquipmentValue($event, index)" @focus="checkAllEquipment($event, index)"> <el-option v-for="item in selectEquipmentState.allEquipmentList" :key="item.id" @@ -21,33 +21,38 @@ </el-select> </td> <td class="w-16"> - <el-input :disabled="selectEquipmentState.disabled" v-model="item.deviceCode" placeholder="请输入数量" /> + <el-input disabled v-model="item.deviceCode"/> </td> <td class="w-16"> - <el-input :disabled="selectEquipmentState.disabled" v-model="item.devicePower" /> + <el-input disabled v-model="item.devicePower" /> </td> <td class="w-16"> - <el-radio-group :disabled="selectEquipmentState.disabled" v-model="item.specialDevice"> - <el-radio :label="1">是</el-radio> - <el-radio :label="2">否</el-radio> - </el-radio-group> +<!-- <el-radio-group disabled v-model="item.specialDevice">--> +<!-- <el-radio :label="1">是</el-radio>--> +<!-- <el-radio :label="2">否</el-radio>--> +<!-- </el-radio-group>--> + <div>{{item.specialDevice == 1 ? '是' : item.specialDevice == 2 ? '否' : ''}}</div> </td> <td class="w-16"> - <el-input type="number" v-model="item.deviceUseCount" /> + <el-input :disabled="selectEquipmentState.disabled" type="number" v-model="item.deviceUseCount" /> </td> <td class="w-16"> <el-button :disabled="selectEquipmentState.disabled" type="danger" @click="deleteEquipmentItem(index)">删除</el-button> </td> </tr> - <tr style="text-align: center"> - <el-button :disabled="selectEquipmentState.disabled" type="primary" shape="round" @click="addEquipmentItem()"> - 选择实验仪器 + <tr style="text-align: center" v-if="!selectEquipmentState.disabled"> + <el-button type="primary" shape="round" @click="addEquipmentItem()"> + 添加现有实验仪器/设备 + </el-button> + <el-button shape="round" @click="addNewEquipment('新增', {})"> + 新增实验仪器/设备配置 </el-button> </tr> + <equipment-dialog ref="equipmentDialogRef" :equipmentTypeList="selectEquipmentState.equipmentTypeList"></equipment-dialog> </template> <script setup lang="ts"> -import {onMounted, reactive, watchEffect} from "vue"; +import {defineAsyncComponent, onMounted, reactive, ref, watchEffect} from "vue"; import {ElMessage} from "element-plus"; import { equipmentApi } from "/@/api/basic/equipement"; @@ -55,11 +60,16 @@ disabled: Boolean, data: Array<AllEquipmentListType> }); - +const equipmentDialog = defineAsyncComponent(() => import('/@/views/basic/equipment/components/equipmentDialog.vue')); const selectEquipmentState = reactive<SelectEquipmentType>({ disabled: false, equipmentList: [], allEquipmentList: [], + equipmentTypeList: [], + specialDeviceList: [ + {id: 1, name: '是'}, + {id:2, name: '否'} + ] }); watchEffect(() => { @@ -67,9 +77,26 @@ selectEquipmentState.disabled = props.disabled }); +const equipmentDialogRef = ref(); + +const getAllType = async ()=>{ + const res = await equipmentApi().getAllType(); + if(res.data.code === 100){ + selectEquipmentState.equipmentTypeList = res.data.data + } +} + +const checkAllEquipment = () => { + getAllEquipmentList() +} + const addEquipmentItem = () => { - selectEquipmentState.equipmentList.push({deviceId: null, deviceUseCount: null, deviceCode: '', deviceName: '', devicePower: '', specialDevice: '',}); + selectEquipmentState.equipmentList.push({deviceId: null, deviceUseCount: null, deviceCode: '', deviceName: '', devicePower: '', specialDevice: '',deviceUnit: null, safeProtect: null}); }; + +const addNewEquipment = (title: string, value: EquipmentType) => { + equipmentDialogRef.value.showEquipmentDialog(title, value, selectEquipmentState.specialDeviceList); +} const deleteEquipmentItem = (index: number) => { selectEquipmentState.equipmentList.splice(index,1); @@ -95,7 +122,9 @@ deviceCode: data.deviceCode, deviceName: data.deviceName, devicePower: data.devicePower, - specialDevice: data.specialDevice + specialDevice: data.specialDevice, + deviceUnit: data.deviceUnit, + safeProtect: data.safeProtect, } }; @@ -109,6 +138,7 @@ }); onMounted(() => { + getAllType(); getAllEquipmentList(); }); </script> @@ -148,8 +178,20 @@ text-align: center; line-height: 42px; + :deep(.el-input__wrapper ){ + box-shadow: none; + } + &:last-of-type { border-right: none; + } + + &.required { + &::before { + content: "*"; + display: inline-block; + color: red; + } } &.w-14 { @@ -201,8 +243,5 @@ .m-color { color: #0c4995; -} -:deep(.el-input__wrapper ){ - box-shadow: none; } </style> -- Gitblit v1.9.2