Kaynağa Gözat

Merge remote-tracking branch 'origin/master'

lipenghui 2 ay önce
ebeveyn
işleme
355f8d30ed

+ 3 - 0
src/api/pms/commonbommaterial/index.ts

@@ -24,6 +24,9 @@ export const CommonBomMaterialApi = {
   createCommonBomMaterial: async (data: CommonBomMaterialVO) => {
     return await request.post({ url: '/pms/iot-common-bom-material/create', data })
   },
+  addMaterials: async (data: any) => {
+    return await request.post({ url: '/pms/iot-common-bom-material/addMaterials', data })
+  },
   updateCommonBomMaterial: async (data: CommonBomMaterialVO) => {
     return await request.put({ url: '/pms/iot-common-bom-material/update', data })
   },

+ 5 - 0
src/api/pms/devicebom/index.ts

@@ -25,6 +25,11 @@ export const IotDeviceBomApi = {
     return await request.get({ url: `/pms/iot-device-bom/page`, params })
   },
 
+  // 查询PMS 设备BOM 关系列表
+  getIotDeviceBomList: async (params: any) => {
+    return await request.get({ url: `/pms/iot-device-bom/list`, params })
+  },
+
   getIotDeviceBomSimple: async (params: any) => {
     return await request.get({ url: `/pms/iot-device-bom/simple-list`, params })
   },

+ 52 - 48
src/api/pms/iotdevicematerial/index.ts

@@ -1,48 +1,52 @@
-import request from '@/config/axios'
-
-// PMS 设备BOM物料关联 VO
-export interface IotDeviceMaterialVO {
-  id: number // 主键
-  deviceCategoryId: number // 所属设备分类
-  deviceId: number // 所属设备
-  name: string // 设备BOM节点名称
-  bomNodeId: number // 设备BOM节点id
-  code: string // 设备BOM节点编码
-  materialId: number // 物料id
-  quantity: number // 数量
-  status: number // 状态 0启用  1停用
-  remark: string // 备注
-}
-
-// PMS 设备BOM物料关联 API
-export const IotDeviceMaterialApi = {
-  // 查询PMS 设备BOM物料关联分页
-  getIotDeviceMaterialPage: async (params: any) => {
-    return await request.get({ url: `/pms/iot-device-material/page`, params })
-  },
-
-  // 查询PMS 设备BOM物料关联详情
-  getIotDeviceMaterial: async (id: number) => {
-    return await request.get({ url: `/pms/iot-device-material/get?id=` + id })
-  },
-
-  // 新增PMS 设备BOM物料关联
-  createIotDeviceMaterial: async (data: IotDeviceMaterialVO) => {
-    return await request.post({ url: `/pms/iot-device-material/create`, data })
-  },
-
-  // 修改PMS 设备BOM物料关联
-  updateIotDeviceMaterial: async (data: IotDeviceMaterialVO) => {
-    return await request.put({ url: `/pms/iot-device-material/update`, data })
-  },
-
-  // 删除PMS 设备BOM物料关联
-  deleteIotDeviceMaterial: async (id: number) => {
-    return await request.delete({ url: `/pms/iot-device-material/delete?id=` + id })
-  },
-
-  // 导出PMS 设备BOM物料关联 Excel
-  exportIotDeviceMaterial: async (params) => {
-    return await request.download({ url: `/pms/iot-device-material/export-excel`, params })
-  },
-}
+import request from '@/config/axios'
+
+// PMS 设备BOM物料关联 VO
+export interface IotDeviceMaterialVO {
+  id: number // 主键
+  deviceCategoryId: number // 所属设备分类
+  deviceId: number // 所属设备
+  name: string // 设备BOM节点名称
+  bomNodeId: number // 设备BOM节点id
+  code: string // 设备BOM节点编码
+  materialId: number // 物料id
+  quantity: number // 数量
+  status: number // 状态 0启用  1停用
+  remark: string // 备注
+}
+
+// PMS 设备BOM物料关联 API
+export const IotDeviceMaterialApi = {
+  // 查询PMS 设备BOM物料关联分页
+  getIotDeviceMaterialPage: async (params: any) => {
+    return await request.get({ url: `/pms/iot-device-material/page`, params })
+  },
+
+  // 查询PMS 设备BOM物料关联详情
+  getIotDeviceMaterial: async (id: number) => {
+    return await request.get({ url: `/pms/iot-device-material/get?id=` + id })
+  },
+
+  // 新增PMS 设备BOM物料关联
+  createIotDeviceMaterial: async (data: IotDeviceMaterialVO) => {
+    return await request.post({ url: `/pms/iot-device-material/create`, data })
+  },
+
+  // 修改PMS 设备BOM物料关联
+  updateIotDeviceMaterial: async (data: IotDeviceMaterialVO) => {
+    return await request.put({ url: `/pms/iot-device-material/update`, data })
+  },
+
+  // 删除PMS 设备BOM物料关联
+  deleteIotDeviceMaterial: async (id: number) => {
+    return await request.delete({ url: `/pms/iot-device-material/delete?id=` + id })
+  },
+
+  // 导出PMS 设备BOM物料关联 Excel
+  exportIotDeviceMaterial: async (params) => {
+    return await request.download({ url: `/pms/iot-device-material/export-excel`, params })
+  },
+
+  deleteDeviceMaterial: async (bomNodeId: number, code: string) => {
+    return await request.delete({ url: '/pms/iot-device-material/deleteDeviceMaterial?bomNodeId=' + bomNodeId + '&code=' + code })
+  }
+}

+ 0 - 4
src/views/pms/bom/BomForm.vue

@@ -78,10 +78,6 @@ import { useTreeStore } from '@/store/modules/treeStore';
 import * as DeviceCategoryApi from '@/api/pms/productclassify'
 import { FormRules } from 'element-plus'
 import { defineEmits, ref } from 'vue';
-import { cloneDeep } from 'lodash-es'
-import { PropType } from 'vue'
-import { propTypes } from '@/utils/propTypes'
-import {copyValueToTarget} from "@/utils";
 
 defineOptions({ name: 'BomForm' })
 

+ 21 - 4
src/views/pms/device/MaterialListDrawerDevice.vue

@@ -14,7 +14,7 @@
         <el-table :data="materials" style="width: 100%">
           <el-table-column prop="name" :label="t('workOrderMaterial.materialName')" width="180" />
           <el-table-column prop="code" :label="t('workOrderMaterial.materialCode')" width="180" />
-          <el-table-column prop="model" :label="t('deviceForm.model')" width="180" />
+          <!-- <el-table-column prop="model" :label="t('deviceForm.model')" width="180" /> -->
           <el-table-column prop="unit" :label="t('workOrderMaterial.unit')" width="180" />
           <el-table-column
             :label="t('deviceList.createTime')"
@@ -25,7 +25,7 @@
           />
           <el-table-column :label="t('maintain.operation')" align="right">
             <template #default="scope">
-              <el-button size="small" type="danger" @click="emit('delete', scope.row)"
+              <el-button size="small" type="danger" @click="handleDelete(scope.row)"
                 >{{ t('info.delete') }}</el-button
               >
             </template>
@@ -49,16 +49,19 @@ import * as DeviceMaterialApi from '@/api/pms/iotdevicematerial'
 import { dateFormatter } from '@/utils/formatTime'
 const { t } = useI18n() // 国际化
 const drawerVisible = ref<boolean>(false)
-const emit = defineEmits(['update:modelValue', 'add', 'delete'])
+const emit = defineEmits(['update:modelValue', 'add', 'delete', 'refresh'])
+
+const message = useMessage() // 消息弹窗
 
 defineOptions({
-  name: 'MaterialListDrawer'
+  name: 'DeviceMaterialListDrawer'
 })
 
 const queryParams = reactive({
   pageNo: 1,
   pageSize: 10,
   createTime: [],
+  deviceId: undefined,
   bomNodeId: '',
   name: '',
   code: ''
@@ -118,9 +121,23 @@ const closeDrawer = () => {
   drawerVisible.value = false
 }
 
+/** 删除设备BOM节点已经挂载的物料 */
+const handleDelete = async (row) => {
+  try {
+    // 删除的二次确认
+    await message.delConfirm()
+    // 发起删除
+    await DeviceMaterialApi.IotDeviceMaterialApi.deleteDeviceMaterial(props.nodeId, row.code)
+    message.success(t('common.delSuccess'))
+    // 刷新列表
+    loadMaterials(props.nodeId)
+  } catch {}
+}
+
 // 关闭抽屉
 const handleClose = () => {
   emit('update:modelValue', false)
+  emit('refresh') // 添加刷新事件
   materials.value = []
 }
 

+ 32 - 6
src/views/pms/device/bom/BomList.vue

@@ -85,13 +85,33 @@
           </el-tooltip>
         </template>
       </el-table-column>
-      <el-table-column prop="deviceCategoryName" :label="t('info.deviceClass')" />
+      <!-- <el-table-column prop="deviceCategoryName" :label="t('info.deviceClass')" /> -->
       <el-table-column prop="sort" :label="t('common.sort')" />
-      <el-table-column prop="status" :label="t('common.status')">
+      <el-table-column label="维修" width="100">
         <template #default="scope">
-          <dict-tag :type="DICT_TYPE.COMMON_STATUS" :value="scope.row.status" />
+          <el-switch
+            :model-value="scope.row.type?.includes(1)"
+            active-value
+            inactive-value
+            disabled
+          />
+        </template>
+      </el-table-column>
+      <el-table-column label="保养" width="100">
+        <template #default="scope">
+          <el-switch
+            :model-value="scope.row.type?.includes(2)"
+            active-value
+            inactive-value
+            disabled
+          />
         </template>
       </el-table-column>
+      <!-- <el-table-column prop="status" :label="t('common.status')">
+        <template #default="scope">
+          <dict-tag :type="DICT_TYPE.COMMON_STATUS" :value="scope.row.status" />
+        </template>
+      </el-table-column> -->
       <el-table-column prop="materials" :label="t('iotMaintain.numberOfMaterials')" />
       <el-table-column :label="t('iotMaintain.operation')" align="center">
         <template #default="scope">
@@ -143,6 +163,7 @@
     :node-id="currentBomNodeId"
     :deviceId = "props.deviceId"
     ref="showDrawer"
+    @refresh="handleDrawerClosed"
   />
 </template>
 <script lang="ts" setup>
@@ -197,9 +218,9 @@ const getList = async () => {
   loading.value = true
   queryParams.deviceId = props.deviceId
   try {
-    const data = await BomApi.IotDeviceBomApi.getIotDeviceBomPage(queryParams)
-    if (data&&data.list) {
-      list.value = handleTree(data.list)
+    const data = await BomApi.IotDeviceBomApi.getIotDeviceBomList(queryParams)
+    if (data) {
+      list.value = handleTree(data)
     }
   } finally {
     loading.value = false
@@ -271,6 +292,11 @@ const resetQuery = () => {
 //   await getList()
 // }
 
+// 添加处理抽屉关闭的方法
+const handleDrawerClosed = () => {
+  getList() // 刷新BOM树数据
+}
+
 /** 添加/修改操作 */
 const formRef = ref()
 const openForm = (type: string, row) => {