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