Kaynağa Gözat

页面调整

lipenghui 3 ay önce
ebeveyn
işleme
edfc38547f

+ 4 - 4
src/views/pms/information/index.vue

@@ -70,7 +70,7 @@
           {{ scope.$index + 1 }}
         </template>
       </el-table-column>
-      <el-table-column label="设备分类" align="center" prop="deviceType" />
+      <el-table-column label="设备分类" align="center" prop="className" />
       <el-table-column label="故障影响" align="center" prop="failureInfluence" />
       <el-table-column label="故障系统" align="center" prop="failureSystem" />
       <el-table-column label="描述" align="center" prop="description" />
@@ -83,7 +83,7 @@
         :formatter="dateFormatter"
         width="180px"
       />
-      <el-table-column label="审核状态" align="center" prop="auditStatus" />
+      <!--      <el-table-column label="审核状态" align="center" prop="auditStatus" />-->
       <el-table-column label="操作" align="center" min-width="120px">
         <template #default="scope">
           <el-button
@@ -115,7 +115,7 @@
   </ContentWrap>
 
   <!-- 表单弹窗:添加/修改 -->
-  <IotInformationDbForm ref="formRef" style="width: 60vw;" @success="getList" />
+  <IotInformationDbForm ref="formRef" style="width: 60vw" @success="getList" />
 </template>
 
 <script setup lang="ts">
@@ -144,7 +144,7 @@ const queryParams = reactive({
   remark: undefined,
   createTime: [],
   processInstanceId: undefined,
-  auditStatus: undefined,
+  auditStatus: undefined
 })
 const queryFormRef = ref() // 搜索的表单
 const exportLoading = ref(false) // 导出的加载中

+ 142 - 130
src/views/pms/inspect/plan/IotInspectPlan.vue

@@ -1,139 +1,151 @@
 <template>
   <ContentWrap v-loading="formLoading">
-    <el-form
-      ref="formRef"
-      :model="formData"
-      :rules="formRules"
-      v-loading="formLoading"
-      style="margin-right: 4em; margin-left: 0.5em; margin-top: 1em"
-      label-width="130px"
-    >
-      <div class="base-expandable-content">
-        <el-row>
-          <el-col :span="12">
-            <el-form-item label="计划名称" prop="planTitle">
-              <el-input v-model="formData.planTitle" placeholder="请输入计划名称" />
-            </el-form-item>
-          </el-col>
-          <el-col :span="12">
-            <el-form-item label="单位" prop="planUnit">
-              <el-select v-model="formData.planUnit" placeholder="请选择单位" :disabled = "formType==='update'" clearable>
-                <el-option
-                  v-for="dict in getStrDictOptions(DICT_TYPE.PMS_INSPECT_UNIT)"
-                  :key="dict.label"
-                  :label="dict.label"
-                  :value="dict.value"
-                />
-              </el-select>
-            </el-form-item>
-          </el-col>
-          <el-col :span="12">
-            <el-form-item label="周期" prop="planCycle">
-              <el-input type="number" v-model="formData.planCycle" :disabled = "formType==='update'"/>
-            </el-form-item>
-          </el-col>
-          <el-col :span="12">
-            <el-form-item label="负责人" prop="charges">
-              <el-select
-                clearable
-                filterable
-                v-model="formData.charges"
-                multiple
-                style="width: 100%"
-              >
-                <el-option
-                  v-for="item in deptUsers"
-                  :key="item.id"
-                  :label="item.nickname"
-                  :value="item.id"
+    <ContentWrap>
+      <el-form
+        ref="formRef"
+        :model="formData"
+        :rules="formRules"
+        style="margin-right: 4em; margin-left: 0.5em; margin-top: 1em"
+        label-width="130px"
+      >
+        <div class="base-expandable-content">
+          <el-row>
+            <el-col :span="12">
+              <el-form-item label="计划名称" prop="planTitle">
+                <el-input v-model="formData.planTitle" placeholder="请输入计划名称" />
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item label="单位" prop="planUnit">
+                <el-select
+                  v-model="formData.planUnit"
+                  placeholder="请选择单位"
+                  :disabled="formType === 'update'"
+                  clearable
+                >
+                  <el-option
+                    v-for="dict in getStrDictOptions(DICT_TYPE.PMS_INSPECT_UNIT)"
+                    :key="dict.label"
+                    :label="dict.label"
+                    :value="dict.value"
+                  />
+                </el-select>
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item label="周期" prop="planCycle">
+                <el-input
+                  type="number"
+                  v-model="formData.planCycle"
+                  :disabled="formType === 'update'"
                 />
-              </el-select>
-            </el-form-item>
-          </el-col>
-          <el-col :span="24">
-            <el-form-item label="备注" prop="remark">
-              <el-input type="textarea" v-model="formData.remark" />
-            </el-form-item>
-          </el-col>
-        </el-row>
-      </div>
-    </el-form>
-  </ContentWrap>
-  <ContentWrap>
-    <!-- 列表 -->
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item label="负责人" prop="charges">
+                <el-select
+                  clearable
+                  filterable
+                  v-model="formData.charges"
+                  multiple
+                  style="width: 100%"
+                >
+                  <el-option
+                    v-for="item in deptUsers"
+                    :key="item.id"
+                    :label="item.nickname"
+                    :value="item.id"
+                  />
+                </el-select>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item label="备注" prop="remark">
+                <el-input type="textarea" v-model="formData.remark" />
+              </el-form-item>
+            </el-col>
+          </el-row>
+        </div>
+      </el-form>
+    </ContentWrap>
     <ContentWrap>
+      <!-- 列表 -->
       <ContentWrap>
-        <el-form
-          class="-mb-15px"
-          :model="queryParams"
-          ref="queryFormRef"
-          :inline="true"
-          label-width="68px"
-        >
-          <el-form-item>
-            <el-button @click="openForm" type="primary"
-              ><Icon icon="ep:plus" class="mr-5px" /> 选择巡检设备</el-button
-            >
-          </el-form-item>
-        </el-form>
-      </ContentWrap>
-      <ContentWrap>
-        <el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true">
-          <el-table-column label="资产编号" align="center" prop="deviceCode" />
-          <el-table-column label="设备名称" align="center" prop="deviceName" />
-          <el-table-column label="路线名称" align="center" prop="routeName" />
-          <el-table-column label="操作" align="center" min-width="120px">
-            <template #default="scope">
-              <div style="display: flex; justify-content: center; align-items: center; width: 100%">
-                <div style="margin-right: 10px">
-                  <Icon style="vertical-align: middle; color: #c36e5b" icon="ep:view" />
-                  <el-button
-                    style="vertical-align: middle"
-                    link
-                    type="warning"
-                    @click="viewRoute(scope.row.itemJson)"
-                  >
-                    巡检路线
-                  </el-button>
-                </div>
-                <div>
-                  <Icon style="vertical-align: middle; color: #ea3434" icon="ep:zoom-out" />
-                  <el-button
-                    style="vertical-align: middle"
-                    link
-                    type="danger"
-                    @click="handleDelete(scope.row.code)"
-                  >
-                    移除
-                  </el-button>
+        <ContentWrap>
+          <el-form
+            class="-mb-15px"
+            :model="queryParams"
+            ref="queryFormRef"
+            :inline="true"
+            label-width="68px"
+          >
+            <el-form-item>
+              <el-button @click="openForm" type="primary"
+                ><Icon icon="ep:plus" class="mr-5px" /> 选择巡检设备</el-button
+              >
+            </el-form-item>
+          </el-form>
+        </ContentWrap>
+        <ContentWrap>
+          <el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true">
+            <el-table-column label="资产编号" align="center" prop="deviceCode" />
+            <el-table-column label="设备名称" align="center" prop="deviceName" />
+            <el-table-column label="路线名称" align="center" prop="routeName" />
+            <el-table-column label="操作" align="center" min-width="120px">
+              <template #default="scope">
+                <div
+                  style="display: flex; justify-content: center; align-items: center; width: 100%"
+                >
+                  <div style="margin-right: 10px">
+                    <Icon style="vertical-align: middle; color: #c36e5b" icon="ep:view" />
+                    <el-button
+                      style="vertical-align: middle"
+                      link
+                      type="warning"
+                      @click="viewRoute(scope.row.itemJson)"
+                    >
+                      巡检路线
+                    </el-button>
+                  </div>
+                  <div>
+                    <Icon style="vertical-align: middle; color: #ea3434" icon="ep:zoom-out" />
+                    <el-button
+                      style="vertical-align: middle"
+                      link
+                      type="danger"
+                      @click="handleDelete(scope.row.code)"
+                    >
+                      移除
+                    </el-button>
+                  </div>
                 </div>
-              </div>
-            </template>
-          </el-table-column>
-        </el-table>
+              </template>
+            </el-table-column>
+          </el-table>
+        </ContentWrap>
       </ContentWrap>
     </ContentWrap>
+    <ContentWrap>
+      <el-form>
+        <el-form-item style="float: right">
+          <el-button @click="submitForm" type="primary" :disabled="formLoading">保 存</el-button>
+          <el-button @click="close">取 消</el-button>
+        </el-form-item>
+      </el-form>
+    </ContentWrap>
+    <InspectItemList
+      ref="inspectItemFormRef"
+      :classify="formData.deviceClassify"
+      :deviceId="formData.deviceId"
+      @choose="inspectItemChoose"
+    />
+    <InspectRouteList ref="deviceFormRef" @choose="deviceChoose" />
+    <RouteInspectItemDrawer
+      ref="showDrawer"
+      :model-value="drawerVisible"
+      @update:model-value="(val) => (drawerVisible = val)"
+    />
   </ContentWrap>
-  <ContentWrap>
-    <el-form>
-      <el-form-item style="float: right">
-        <el-button @click="submitForm" type="primary" :disabled="formLoading">保 存</el-button>
-        <el-button @click="close">取 消</el-button>
-      </el-form-item>
-    </el-form>
-  </ContentWrap>
-  <InspectItemList
-    ref="inspectItemFormRef"
-    :classify="formData.deviceClassify"
-    :deviceId="formData.deviceId"
-    @choose="inspectItemChoose"
-  />
-  <InspectRouteList ref="deviceFormRef" @choose="deviceChoose" />
-  <RouteInspectItemDrawer
-    ref="showDrawer"
-    :model-value="drawerVisible"
-    @update:model-value="(val) => (drawerVisible = val)"
-  />
 </template>
 <script setup lang="ts">
 import * as UserApi from '@/api/system/user'
@@ -147,7 +159,7 @@ import { IotInspectRouteVO } from '@/api/pms/inspect/route'
 import { DICT_TYPE, getStrDictOptions } from '@/utils/dict'
 import { IotInspectPlanApi, IotInspectPlanVO } from '@/api/pms/inspect/plan'
 import RouteInspectItemDrawer from '@/views/pms/inspect/plan/RouteInspectItemDrawer.vue'
-import * as JobApi from '@/api/infra/job'
+
 /** 维修工单 表单 */
 defineOptions({ name: 'InspectPlanAdd' })
 
@@ -172,7 +184,7 @@ const formData = ref({
   planCycle: undefined,
   planUnit: undefined,
   charge: undefined,
-  charges:[],
+  charges: [],
   deviceIds: undefined,
   remark: undefined,
   deptId: undefined
@@ -210,7 +222,7 @@ const openForm = () => {
 
 const close = () => {
   delView(unref(currentRoute))
-  push({ name: 'IotInspectPlan', params:{}})
+  push({ name: 'IotInspectPlan', params: {} })
   // delView(unref(currentRoute))
   // push({
   //   name: 'IotInspectPlan',

+ 121 - 116
src/views/pms/inspect/route/IotInspectRoute.vue

@@ -1,115 +1,118 @@
 <template>
   <ContentWrap v-loading="formLoading">
-    <el-form
-      ref="formRef"
-      :model="formData"
-      :rules="formRules"
-      v-loading="formLoading"
-      style="margin-right: 4em; margin-left: 0.5em; margin-top: 1em"
-      label-width="130px"
-    >
-      <div class="base-expandable-content">
-        <el-row>
-          <el-col :span="8">
-            <el-form-item label="路线名称" prop="routeName">
-              <el-input v-model="formData.routeName" placeholder="路线名称" />
-            </el-form-item>
-          </el-col>
-          <el-col :span="8">
-            <el-form-item label="设备类别" prop="deviceClassify">
-              <el-tree-select
-                filterable
-                clearable
-                v-model="formData.deviceClassify"
-                :data="productClassifyList"
-                :props="defaultProps"
-                check-strictly
-                node-key="id"
-                placeholder="请选择设备类别"
-              />
-            </el-form-item>
-          </el-col>
-          <el-col :span="8">
-            <el-form-item label="设备" prop="deviceId">
-              <el-select
-                v-model="formData.deviceId"
-                :model-value="deviceLabel"
-                placeholder="请输入设备"
-                @click="openDevice"
-              />
-            </el-form-item>
-          </el-col>
-        </el-row>
-      </div>
-    </el-form>
-  </ContentWrap>
-  <ContentWrap>
-    <!-- 列表 -->
     <ContentWrap>
+      <el-form
+        ref="formRef"
+        :model="formData"
+        :rules="formRules"
+        style="margin-right: 4em; margin-left: 0.5em; margin-top: 1em"
+        label-width="130px"
+      >
+        <div class="base-expandable-content">
+          <el-row>
+            <el-col :span="8">
+              <el-form-item label="路线名称" prop="routeName">
+                <el-input v-model="formData.routeName" placeholder="路线名称" />
+              </el-form-item>
+            </el-col>
+            <el-col :span="8">
+              <el-form-item label="设备类别" prop="deviceClassify">
+                <el-tree-select
+                  filterable
+                  clearable
+                  v-model="formData.deviceClassify"
+                  :data="productClassifyList"
+                  :props="defaultProps"
+                  check-strictly
+                  node-key="id"
+                  placeholder="请选择设备类别"
+                />
+              </el-form-item>
+            </el-col>
+            <el-col :span="8">
+              <el-form-item label="设备" prop="deviceId">
+                <el-select
+                  v-model="formData.deviceId"
+                  :model-value="deviceLabel"
+                  placeholder="请输入设备"
+                  @click="openDevice"
+                />
+              </el-form-item>
+            </el-col>
+          </el-row>
+        </div>
+      </el-form>
+    </ContentWrap>
+    <ContentWrap>
+      <!-- 列表 -->
       <ContentWrap>
-        <el-form
-          class="-mb-15px"
-          :model="queryParams"
-          ref="queryFormRef"
-          :inline="true"
-          label-width="68px"
+        <ContentWrap>
+          <el-form
+            class="-mb-15px"
+            :model="queryParams"
+            ref="queryFormRef"
+            :inline="true"
+            label-width="68px"
+          >
+            <el-form-item>
+              <el-button @click="openForm" type="primary"
+                ><Icon icon="ep:plus" class="mr-5px" /> 选择巡检项</el-button
+              >
+            </el-form-item>
+          </el-form>
+        </ContentWrap>
+        <draggable
+          v-model="items"
+          item-key="id"
+          tag="div"
+          class="sortable-container"
+          handle=".sortable-item"
+          :animation="150"
+          @start="dragStart"
+          @end="dragEnd"
         >
-          <el-form-item>
-            <el-button @click="openForm" type="primary"
-              ><Icon icon="ep:plus" class="mr-5px" /> 选择巡检项</el-button
-            >
-          </el-form-item>
-        </el-form>
-      </ContentWrap>
-      <draggable
-        v-model="items"
-        item-key="id"
-        tag="div"
-        class="sortable-container"
-        handle=".sortable-item"
-        :animation="150"
-        @start="dragStart"
-        @end="dragEnd"
-      >
-        <template #item="{ element, index }">
-          <div class="sortable-item">
-            <!-- 序号显示 -->
-            <div class="order-number">{{ index + 1 }}</div>
+          <template #item="{ element, index }">
+            <div class="sortable-item">
+              <!-- 序号显示 -->
+              <div class="order-number">{{ index + 1 }}</div>
 
-            <!-- 拖动手柄 -->
-            <span class="drag-handle">≡</span>
+              <!-- 拖动手柄 -->
+              <span class="drag-handle">≡</span>
 
-            <!-- 组件内容 -->
-            <div class="component-content">
-              <span style="font-weight: bold">巡检项:</span><span style="font-size: 14px">{{ element.item }}</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
-              <span style="font-weight: bold">巡检标准:</span><span style="font-size: 14px">{{element.standard}}</span>
-            </div>
-            <div>
-              <el-button type="warning" @click="deleteDraggable(index)">删除</el-button>
+              <!-- 组件内容 -->
+              <div class="component-content">
+                <span style="font-weight: bold">巡检项:</span
+                ><span style="font-size: 14px">{{ element.item }}</span
+                >&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+                <span style="font-weight: bold">巡检标准:</span
+                ><span style="font-size: 14px">{{ element.standard }}</span>
+              </div>
+              <div>
+                <el-button type="warning" @click="deleteDraggable(index)">删除</el-button>
+              </div>
             </div>
-          </div>
-        </template>
-      </draggable>
+          </template>
+        </draggable>
+      </ContentWrap>
     </ContentWrap>
+    <ContentWrap>
+      <el-form>
+        <el-form-item style="float: right">
+          <el-button @click="submitForm" type="primary" :disabled="formLoading">保 存</el-button>
+          <el-button @click="close">取 消</el-button>
+        </el-form-item>
+      </el-form>
+    </ContentWrap>
+    <InspectItemList
+      ref="inspectItemFormRef"
+      :classify="formData.deviceClassify"
+      :deviceId="formData.deviceId"
+      @choose="inspectItemChoose"
+    />
+    <DeviceList ref="deviceFormRef" @choose="deviceChoose" />
   </ContentWrap>
-  <ContentWrap>
-    <el-form>
-      <el-form-item style="float: right">
-        <el-button @click="submitForm" type="primary" :disabled="formLoading">保 存</el-button>
-        <el-button @click="close">取 消</el-button>
-      </el-form-item>
-    </el-form>
-  </ContentWrap>
-  <InspectItemList
-    ref="inspectItemFormRef"
-    :classify="formData.deviceClassify"
-    :deviceId="formData.deviceId"
-    @choose="inspectItemChoose"
-  />
-  <DeviceList ref="deviceFormRef" @choose="deviceChoose" />
 </template>
 <script setup lang="ts">
-import { IotMaintainApi } from '@/api/pms/maintain'
 import * as UserApi from '@/api/system/user'
 import { useUserStore } from '@/store/modules/user'
 import { ref } from 'vue'
@@ -121,7 +124,7 @@ import * as ProductClassifyApi from '@/api/pms/productclassify'
 import draggable from 'vuedraggable'
 import InspectItemList from '@/views/pms/inspect/route/InspectItemList.vue'
 import DeviceList from '@/views/pms/failure/DeviceList.vue'
-import {IotInspectRouteApi, IotInspectRouteVO} from "@/api/pms/inspect/route";
+import { IotInspectRouteApi, IotInspectRouteVO } from '@/api/pms/inspect/route'
 
 /** 维修工单 表单 */
 defineOptions({ name: 'RouteAdd' })
@@ -155,17 +158,20 @@ const formData = ref({
 })
 // 拖动状态管理
 const dragStart = () => {
-  document.body.style.cursor = 'grabbing';
-};
+  document.body.style.cursor = 'grabbing'
+}
 const deleteDraggable = async (index) => {
   await message.delConfirm()
   items.value.splice(index, 1)
 }
 const dragEnd = (event) => {
-  document.body.style.cursor = '';
-  console.log('新顺序:', items.value.map(c => c.id));
-  console.log('拖拽后的新位置:', event.newIndex+1)
-};
+  document.body.style.cursor = ''
+  console.log(
+    '新顺序:',
+    items.value.map((c) => c.id)
+  )
+  console.log('拖拽后的新位置:', event.newIndex + 1)
+}
 const items = ref([])
 const deviceChoose = (row) => {
   formData.value.deviceId = row.id
@@ -181,8 +187,8 @@ const formRules = reactive({
 
 const formRef = ref() // 表单 Ref
 const inspectItemChoose = (rows) => {
-  rows.forEach(it =>{
-    const ifExist = items.value.find(item => item.id === it.id)
+  rows.forEach((it) => {
+    const ifExist = items.value.find((item) => item.id === it.id)
     if (!ifExist) {
       items.value.push(it)
       console.log(JSON.stringify(it))
@@ -193,9 +199,9 @@ const inspectItemChoose = (rows) => {
 }
 const inspectItemFormRef = ref()
 const openForm = () => {
-  if (formData.value.deviceClassify===undefined) {
-    message.error("请选择设备类别或设备")
-    return;
+  if (formData.value.deviceClassify === undefined) {
+    message.error('请选择设备类别或设备')
+    return
   }
   inspectItemFormRef.value.open(formData.value.deviceClassify, formData.value.deviceId)
 }
@@ -344,9 +350,6 @@ const handleDelete = async (id: number) => {
   border-radius: 4px;
 }
 
-
-
-
 .sortable-container {
   cursor: move;
   display: flex;
@@ -364,7 +367,9 @@ const handleDelete = async (id: number) => {
   background: #fff;
   border: 1px solid #ebeef5;
   border-radius: 8px;
-  transition: transform 0.3s, box-shadow 0.3s;
+  transition:
+    transform 0.3s,
+    box-shadow 0.3s;
   user-select: none;
   height: 50%;
 }

+ 261 - 254
src/views/pms/maintain/IotMaintain.vue

@@ -1,266 +1,272 @@
 <template>
   <ContentWrap v-loading="formLoading">
-    <el-form
-      ref="formRef"
-      :model="formData"
-      :rules="formRules"
-      v-loading="formLoading"
-      style="margin-right: 4em; margin-left: 0.5em; margin-top: 1em"
-      label-width="130px"
-    >
-      <div class="base-expandable-content">
-        <el-row>
-          <el-col :span="8">
-            <el-form-item label="设备" prop="deviceName">
-              <el-select
-                :disabled="formType === 'update'"
-                v-model="formData.deviceName"
-                :model-value="deviceLabel"
-                placeholder="请选择设备"
-                @click="openForm"
-              />
-            </el-form-item>
-          </el-col>
-          <el-col :span="8">
-            <el-form-item label="维修类型" prop="type">
-              <el-select v-model="formData.type" placeholder="请选择维修类型" clearable>
-                <el-option
-                  v-for="dict in getStrDictOptions(DICT_TYPE.PMS_MAIN_TYPE)"
-                  :key="dict.value"
-                  :label="dict.label"
-                  :value="dict.value"
+    <ContentWrap>
+      <el-form
+        ref="formRef"
+        :model="formData"
+        :rules="formRules"
+        style="margin-right: 4em; margin-left: 0.5em; margin-top: 1em"
+        label-width="130px"
+      >
+        <div class="base-expandable-content">
+          <el-row>
+            <el-col :span="8">
+              <el-form-item label="设备" prop="deviceName">
+                <el-select
+                  :disabled="formType === 'update'"
+                  v-model="formData.deviceName"
+                  :model-value="deviceLabel"
+                  placeholder="请选择设备"
+                  @click="openForm"
                 />
-              </el-select>
-            </el-form-item>
-          </el-col>
-          <el-col :span="8">
-            <el-form-item label="是否停机" prop="ifStop">
-              <el-select v-model="formData.ifStop" placeholder="请选择是否停机" clearable>
-                <el-option
-                  v-for="dict in getBoolDictOptions(DICT_TYPE.INFRA_BOOLEAN_STRING)"
-                  :key="dict.value"
-                  :label="dict.label"
-                  :value="dict.value"
+              </el-form-item>
+            </el-col>
+            <el-col :span="8">
+              <el-form-item label="维修类型" prop="type">
+                <el-select v-model="formData.type" placeholder="请选择维修类型" clearable>
+                  <el-option
+                    v-for="dict in getStrDictOptions(DICT_TYPE.PMS_MAIN_TYPE)"
+                    :key="dict.value"
+                    :label="dict.label"
+                    :value="dict.value"
+                  />
+                </el-select>
+              </el-form-item>
+            </el-col>
+            <el-col :span="8">
+              <el-form-item label="是否停机" prop="ifStop">
+                <el-select v-model="formData.ifStop" placeholder="请选择是否停机" clearable>
+                  <el-option
+                    v-for="dict in getBoolDictOptions(DICT_TYPE.INFRA_BOOLEAN_STRING)"
+                    :key="dict.value"
+                    :label="dict.label"
+                    :value="dict.value"
+                  />
+                </el-select>
+              </el-form-item>
+            </el-col>
+            <el-col :span="8">
+              <el-form-item label="维修开始时间" prop="maintainStartTime">
+                <el-date-picker
+                  style="width: 150%"
+                  v-model="formData.maintainStartTime"
+                  type="datetime"
+                  value-format="x"
+                  placeholder="选择维修开始时间"
                 />
-              </el-select>
-            </el-form-item>
-          </el-col>
-          <el-col :span="8">
-            <el-form-item label="维修开始时间" prop="maintainStartTime">
-              <el-date-picker
-                style="width: 150%"
-                v-model="formData.maintainStartTime"
-                type="datetime"
-                value-format="x"
-                placeholder="选择维修开始时间"
-              />
-            </el-form-item>
-          </el-col>
-          <el-col :span="8">
-            <el-form-item label="维修结束时间" prop="maintainEndTime">
-              <el-date-picker
-                @change="endTimeBlur"
-                style="width: 150%"
-                v-model="formData.maintainEndTime"
-                type="datetime"
-                value-format="x"
-                placeholder="选择维修结束时间"
-              />
-            </el-form-item>
-          </el-col>
-          <el-col :span="8">
-            <el-form-item label="维修负责人" prop="maintainPerson">
-              <el-select v-model="formData.maintainPerson" filterable clearable style="width: 100%">
-                <el-option
-                  v-for="item in deptUsers"
-                  :key="item.id"
-                  :label="item.nickname"
-                  :value="item.id"
+              </el-form-item>
+            </el-col>
+            <el-col :span="8">
+              <el-form-item label="维修结束时间" prop="maintainEndTime">
+                <el-date-picker
+                  @change="endTimeBlur"
+                  style="width: 150%"
+                  v-model="formData.maintainEndTime"
+                  type="datetime"
+                  value-format="x"
+                  placeholder="选择维修结束时间"
                 />
-              </el-select>
-            </el-form-item>
-          </el-col>
-          <el-col :span="8">
-            <el-form-item label="故障时间" prop="failureTime">
-              <el-date-picker
-                style="width: 150%"
-                v-model="formData.failureTime"
-                type="datetime"
-                value-format="x"
-                placeholder="选择故障时间"
-              />
-            </el-form-item>
-          </el-col>
-          <el-col :span="8">
-            <el-form-item label="故障影响" prop="failureInfluence">
-              <el-input v-model="formData.failureInfluence" placeholder="请输入故障影响" />
-            </el-form-item>
-          </el-col>
-          <el-col :span="8">
-            <el-form-item label="故障系统" prop="failureSystem">
-              <el-input v-model="formData.failureSystem" placeholder="请输入故障系统" />
-            </el-form-item>
-          </el-col>
-          <el-col :span="8">
-            <el-form-item label="图片" prop="pic">
-              <UploadImg v-model="formData.pic" height="55px" />
-            </el-form-item>
-          </el-col>
-          <el-col :span="8" v-if="formData.type === 'out'">
-            <el-form-item label="供应商" prop="supplier" :rules="supplierRules">
-              <el-select
-                v-model="formData.supplier"
-                placeholder="请输入供应商"
-                :model-value="supplierLabel"
-                @click="openCustomer('supplier')"
-              />
-            </el-form-item>
-          </el-col>
-          <el-col :span="8" v-if="formData.type === 'out'">
-            <el-form-item label="维修费用" prop="maintainFee" :rules="strictRules">
-              <el-input-number
-                v-model="formData.maintainFee"
-                :min="0"
-                :precision="2"
-                :step="0.1"
-                placeholder="请输入维修费用"
-                style="width: 100%"
-              />
-            </el-form-item>
-          </el-col>
-          <el-col :span="8" v-if="formData.type === 'out'">
-            <el-form-item label="委外相关附件" prop="outFile">
-              <UploadFile v-model="formData.outFile" class="min-w-80px" />
-            </el-form-item>
-          </el-col>
-          <el-col :span="16">
-            <el-form-item label="故障描述" prop="description">
-              <el-input type="textarea" v-model="formData.description" />
-            </el-form-item>
-          </el-col>
-          <el-col :span="12">
-            <el-form-item label="维修描述" prop="maintainDescription">
-              <el-input type="textarea" v-model="formData.maintainDescription" />
-            </el-form-item>
-          </el-col>
-          <el-col :span="12">
-            <el-form-item label="解决办法" prop="solution">
-              <el-input type="textarea" v-model="formData.solution" />
-            </el-form-item>
-          </el-col>
-          <el-col :span="24">
-            <el-form-item label="备注" prop="remark">
-              <el-input v-model="formData.remark" type="textarea" placeholder="请输入备注" />
-            </el-form-item>
-          </el-col>
-        </el-row>
-      </div>
-    </el-form>
-  </ContentWrap>
-  <ContentWrap>
-    <ContentWrap>
-      <!-- 搜索工作栏 -->
-      <el-form class="-mb-15px" ref="queryFormRef" :inline="true" label-width="68px">
-        <el-form-item>
-          <!--          <el-button @click="openMaterialForm" type="primary"-->
-          <!--            ><Icon icon="ep:plus" class="mr-5px" /> 选择物料</el-button>-->
-          <el-button @click="openMaintainForm" type="primary"
-            ><Icon icon="ep:plus" class="mr-5px" /> 选择维修项</el-button
-          >
-          <el-button @click="openMaintainItem" type="warning"
-            ><Icon icon="ep:plus" class="mr-5px" /> 新增维修项</el-button
-          >
-          <!--          <el-button @click="handleViewNew" type="warning"-->
-          <!--            ><Icon icon="ep:plus" class="mr-5px" /> 新增物料</el-button>-->
-        </el-form-item>
+              </el-form-item>
+            </el-col>
+            <el-col :span="8">
+              <el-form-item label="维修负责人" prop="maintainPerson">
+                <el-select
+                  v-model="formData.maintainPerson"
+                  filterable
+                  clearable
+                  style="width: 100%"
+                >
+                  <el-option
+                    v-for="item in deptUsers"
+                    :key="item.id"
+                    :label="item.nickname"
+                    :value="item.id"
+                  />
+                </el-select>
+              </el-form-item>
+            </el-col>
+            <el-col :span="8">
+              <el-form-item label="故障时间" prop="failureTime">
+                <el-date-picker
+                  style="width: 150%"
+                  v-model="formData.failureTime"
+                  type="datetime"
+                  value-format="x"
+                  placeholder="选择故障时间"
+                />
+              </el-form-item>
+            </el-col>
+            <el-col :span="8">
+              <el-form-item label="故障影响" prop="failureInfluence">
+                <el-input v-model="formData.failureInfluence" placeholder="请输入故障影响" />
+              </el-form-item>
+            </el-col>
+            <el-col :span="8">
+              <el-form-item label="故障系统" prop="failureSystem">
+                <el-input v-model="formData.failureSystem" placeholder="请输入故障系统" />
+              </el-form-item>
+            </el-col>
+            <el-col :span="8">
+              <el-form-item label="图片" prop="pic">
+                <UploadImg v-model="formData.pic" height="55px" />
+              </el-form-item>
+            </el-col>
+            <el-col :span="8" v-if="formData.type === 'out'">
+              <el-form-item label="供应商" prop="supplier" :rules="supplierRules">
+                <el-select
+                  v-model="formData.supplier"
+                  placeholder="请输入供应商"
+                  :model-value="supplierLabel"
+                  @click="openCustomer('supplier')"
+                />
+              </el-form-item>
+            </el-col>
+            <el-col :span="8" v-if="formData.type === 'out'">
+              <el-form-item label="维修费用" prop="maintainFee" :rules="strictRules">
+                <el-input-number
+                  v-model="formData.maintainFee"
+                  :min="0"
+                  :precision="2"
+                  :step="0.1"
+                  placeholder="请输入维修费用"
+                  style="width: 100%"
+                />
+              </el-form-item>
+            </el-col>
+            <el-col :span="8" v-if="formData.type === 'out'">
+              <el-form-item label="委外相关附件" prop="outFile">
+                <UploadFile v-model="formData.outFile" class="min-w-80px" />
+              </el-form-item>
+            </el-col>
+            <el-col :span="16">
+              <el-form-item label="故障描述" prop="description">
+                <el-input type="textarea" v-model="formData.description" />
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item label="维修描述" prop="maintainDescription">
+                <el-input type="textarea" v-model="formData.maintainDescription" />
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item label="解决办法" prop="solution">
+                <el-input type="textarea" v-model="formData.solution" />
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item label="备注" prop="remark">
+                <el-input v-model="formData.remark" type="textarea" placeholder="请输入备注" />
+              </el-form-item>
+            </el-col>
+          </el-row>
+        </div>
       </el-form>
     </ContentWrap>
-
-    <!-- 列表 -->
     <ContentWrap>
-      <el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true">
-        <el-table-column label="资产编码" align="center" prop="deviceCode" />
-        <el-table-column label="设备名称" align="center" prop="deviceName" />
-        <el-table-column label="维修项" align="center" prop="name" />
+      <ContentWrap>
+        <!-- 搜索工作栏 -->
+        <el-form class="-mb-15px" ref="queryFormRef" :inline="true" label-width="68px">
+          <el-form-item>
+            <!--          <el-button @click="openMaterialForm" type="primary"-->
+            <!--            ><Icon icon="ep:plus" class="mr-5px" /> 选择物料</el-button>-->
+            <el-button @click="openMaintainForm" type="primary"
+              ><Icon icon="ep:plus" class="mr-5px" /> 选择维修项</el-button
+            >
+            <el-button @click="openMaintainItem" type="warning"
+              ><Icon icon="ep:plus" class="mr-5px" /> 新增维修项</el-button
+            >
+            <!--          <el-button @click="handleViewNew" type="warning"-->
+            <!--            ><Icon icon="ep:plus" class="mr-5px" /> 新增物料</el-button>-->
+          </el-form-item>
+        </el-form>
+      </ContentWrap>
 
-        <el-table-column label="操作" align="center" min-width="120px">
-          <template #default="scope">
-            <div style="display: flex; justify-content: center; align-items: center; width: 100%">
-              <div>
-                <Icon style="vertical-align: middle; color: #ea3434" icon="ep:zoom-out" />
-                <el-button
-                  style="vertical-align: middle"
-                  link
-                  type="danger"
-                  @click="handleDelete(scope.row.code)"
-                >
-                  移除
-                </el-button>
-              </div>
-              <div style="margin-left: 12px">
-                <el-button link type="primary" @click="openMaterialForm(scope.row)">
-                  选择物料
-                </el-button>
-              </div>
-              <div style="margin-left: 12px">
-                <el-button link type="primary" @click="handleViewNew(scope.row.bomNodeId)">
-                  物料详情
-                </el-button>
+      <!-- 列表 -->
+      <ContentWrap>
+        <el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true">
+          <el-table-column label="资产编码" align="center" prop="deviceCode" />
+          <el-table-column label="设备名称" align="center" prop="deviceName" />
+          <el-table-column label="维修项" align="center" prop="name" />
+
+          <el-table-column label="操作" align="center" min-width="120px">
+            <template #default="scope">
+              <div style="display: flex; justify-content: center; align-items: center; width: 100%">
+                <div>
+                  <Icon style="vertical-align: middle; color: #ea3434" icon="ep:zoom-out" />
+                  <el-button
+                    style="vertical-align: middle"
+                    link
+                    type="danger"
+                    @click="handleDelete(scope.row.code)"
+                  >
+                    移除
+                  </el-button>
+                </div>
+                <div style="margin-left: 12px">
+                  <el-button link type="primary" @click="openMaterialForm(scope.row)">
+                    选择物料
+                  </el-button>
+                </div>
+                <div style="margin-left: 12px">
+                  <el-button link type="primary" @click="handleViewNew(scope.row.bomNodeId)">
+                    物料详情
+                  </el-button>
+                </div>
               </div>
-            </div>
-          </template>
-        </el-table-column>
-      </el-table>
-    </ContentWrap>
+            </template>
+          </el-table-column>
+        </el-table>
+      </ContentWrap>
 
-    <!-- 表单弹窗:添加/修改 -->
-    <WorkOrderMaterial ref="materialFormRef" @choose="selectChoose" />
-    <ChooseMaintain ref="maintainFormRef" @choose="maintainChoose" />
-  </ContentWrap>
-  <ContentWrap>
-    <el-form>
-      <el-form-item style="float: right">
-        <el-button @click="submitForm" type="primary" :disabled="formLoading">保 存</el-button>
-        <el-button @click="close">取 消</el-button>
-      </el-form-item>
-    </el-form>
+      <!-- 表单弹窗:添加/修改 -->
+      <WorkOrderMaterial ref="materialFormRef" @choose="selectChoose" />
+      <ChooseMaintain ref="maintainFormRef" @choose="maintainChoose" />
+    </ContentWrap>
+    <ContentWrap>
+      <el-form>
+        <el-form-item style="float: right">
+          <el-button @click="submitForm" type="primary" :disabled="formLoading">保 存</el-button>
+          <el-button @click="close">取 消</el-button>
+        </el-form-item>
+      </el-form>
+    </ContentWrap>
+    <DeviceList ref="deviceFormRef" @choose="deviceChoose" />
+    <CustomerList ref="customerFormRef" @choose="customerChoose" />
+    <MaterialListDrawer
+      :model-value="drawerVisible"
+      @update:model-value="(val) => (drawerVisible = val)"
+      :node-id="currentBomNodeId"
+      :materials="materialList.filter((item) => item.bomNodeId === currentBomNodeId)"
+    />
+    <Dialog title="维修项" v-model="addItemVisible" style="min-height: 300px">
+      <el-form
+        ref="addFormRef"
+        :model="addFormData"
+        :rules="addFormRules"
+        label-position="right"
+        label-width="68px"
+      >
+        <el-form-item label="BOM节点id" v-if="false" prop="deviceCode">
+          <el-input v-model="addFormData.bomNodeId" disabled />
+        </el-form-item>
+        <el-form-item label="资产编码" prop="deviceCode">
+          <el-input v-model="addFormData.deviceCode" disabled />
+        </el-form-item>
+        <el-form-item label="设备名称" prop="deviceName">
+          <el-input v-model="addFormData.deviceName" disabled />
+        </el-form-item>
+        <el-form-item label="维修项" prop="name">
+          <el-input v-model="addFormData.name" placeholder="请输入维修项" />
+        </el-form-item>
+      </el-form>
+      <el-form>
+        <el-form-item style="float: right">
+          <el-button @click="handleConfirm" type="primary">确 定</el-button>
+          <el-button @click="closeDialog">取 消</el-button>
+        </el-form-item>
+      </el-form>
+    </Dialog>
   </ContentWrap>
-  <DeviceList ref="deviceFormRef" @choose="deviceChoose" />
-  <CustomerList ref="customerFormRef" @choose="customerChoose" />
-  <MaterialListDrawer
-    :model-value="drawerVisible"
-    @update:model-value="(val) => (drawerVisible = val)"
-    :node-id="currentBomNodeId"
-    :materials="materialList.filter((item) => item.bomNodeId === currentBomNodeId)"
-  />
-  <Dialog title="维修项" v-model="addItemVisible" style="min-height: 300px">
-    <el-form
-      ref="addFormRef"
-      :model="addFormData"
-      :rules="addFormRules"
-      label-position="right"
-      label-width="68px"
-    >
-      <el-form-item label="BOM节点id" v-if="false" prop="deviceCode">
-        <el-input v-model="addFormData.bomNodeId" disabled />
-      </el-form-item>
-      <el-form-item label="资产编码" prop="deviceCode">
-        <el-input v-model="addFormData.deviceCode" disabled />
-      </el-form-item>
-      <el-form-item label="设备名称" prop="deviceName">
-        <el-input v-model="addFormData.deviceName" disabled />
-      </el-form-item>
-      <el-form-item label="维修项" prop="name">
-        <el-input v-model="addFormData.name" placeholder="请输入维修项" />
-      </el-form-item>
-    </el-form>
-    <el-form>
-      <el-form-item style="float: right">
-        <el-button @click="handleConfirm" type="primary">确 定</el-button>
-        <el-button @click="closeDialog">取 消</el-button>
-      </el-form-item>
-    </el-form>
-  </Dialog>
 </template>
 <script setup lang="ts">
 import { IotMaintainApi } from '@/api/pms/maintain'
@@ -276,7 +282,8 @@ import CustomerList from '@/views/pms/device/CustomerList.vue'
 import WorkOrderMaterial from '@/views/pms/iotmainworkorder/WorkOrderMaterial.vue'
 import { IotMainWorkOrderBomMaterialVO } from '@/api/pms/iotmainworkorderbommaterial'
 import MaterialListDrawer from '@/views/pms/iotmainworkorder/SelectedMaterialDrawer.vue'
-import ChooseMaintain from "@/views/pms/maintain/material/ChooseMaintain.vue";
+import ChooseMaintain from '@/views/pms/maintain/material/ChooseMaintain.vue'
+
 /** 维修工单 表单 */
 defineOptions({ name: 'MaintainAdd' })
 const addItemVisible = ref(false) // 弹窗的是否展示
@@ -370,7 +377,7 @@ const outFormRules = reactive({
 })
 
 const handleConfirm = () => {
-  addFormData.value.bomNodeId = Math.floor(100000 + Math.random() * 900000);
+  addFormData.value.bomNodeId = Math.floor(100000 + Math.random() * 900000)
   list.value.push(addFormData.value)
   addItemVisible.value = false
 }
@@ -463,7 +470,7 @@ const selectChoose = (selectedMaterial) => {
   })
   list.value.forEach((item) => {
     if (item.bomNodeId === bomNodeId.value) {
-      item.materials = processedMaterials;
+      item.materials = processedMaterials
     }
   })
   console.log('选择完成的数据:', JSON.stringify(selectedMaterial))