ソースを参照

pms 瑞鹰 未施工设备

zhangcl 5 日 前
コミット
c19113cd65
1 ファイル変更52 行追加1 行削除
  1. 52 1
      src/views/pms/iotrddailyreport/FillDailyReportForm.vue

+ 52 - 1
src/views/pms/iotrddailyreport/FillDailyReportForm.vue

@@ -203,6 +203,22 @@
           </el-col>
         </el-row>
 
+        <!-- 未施工设备 -->
+        <el-row>
+          <el-col :span="24">
+            <el-form-item label="未施工设备" prop="unSelectedDeviceNames">
+              <el-input
+                v-model="unSelectedDeviceNames"
+                type="textarea"
+                :rows="2"
+                placeholder="未施工的设备将显示在这里"
+                :readonly="true"
+                class="unselected-device"
+              />
+            </el-form-item>
+          </el-col>
+        </el-row>
+
         <!-- 第二行:施工工艺 -->
         <el-row>
           <el-col :span="24">
@@ -706,6 +722,32 @@ const removeAttachment = (index: number) => {
   }
 }
 
+// 计算属性:未施工设备名称
+const unSelectedDeviceNames = computed(() => {
+  const selectedDevices = dailyReportData.value.selectedDevices || []
+  const selectedDeviceIds = formData.value.deviceIds || []
+
+  if (selectedDevices.length === 0) {
+    return '无可用设备'
+  }
+
+  // 筛选出未选择的设备
+  const unselectedDevices = selectedDevices.filter((device: any) =>
+    !selectedDeviceIds.includes(device.id)
+  )
+
+  if (unselectedDevices.length === 0) {
+    return '所有设备都已施工'
+  }
+
+  // 提取设备名称并用逗号分隔
+  const deviceNames = unselectedDevices
+    .map((device: any) => device.deviceName || device.deviceCode || '未知设备')
+    .filter((name: string) => name !== '未知设备')
+
+  return deviceNames.join(', ') || '无未选择设备'
+})
+
 // 附件名称点击事件
 const inContent = async (attachment) => {
   if (!attachment || !attachment.filePath) {
@@ -760,7 +802,7 @@ const formatDevicesForDisplay = computed(() => {
   }
 
   const deviceNames = deviceIds
-    .map(id => deviceMap.value[id]?.deviceCode)
+    .map(id => deviceMap.value[id]?.deviceName)
     .filter(name => name !== undefined && name !== '')
 
   if (deviceNames.length === 0) return '无设备'
@@ -1608,4 +1650,13 @@ const handleApprove = async (action: 'pass' | 'reject') => {
   width: 100%;
   margin-top: 10px;
 }
+
+/* 未选择设备字段的只读样式 */
+:deep(.unselected-device .el-textarea__inner) {
+  background-color: #f5f7fa;
+  border-color: #e4e7ed;
+  color: #909399;
+  cursor: not-allowed;
+  resize: none;
+}
 </style>