Jelajahi Sumber

pms 临时工单 已经选择的物料 删除 选择物料 重置

zhangcl 1 bulan lalu
induk
melakukan
ed250fe1c2

+ 19 - 0
src/views/pms/iotmainworkorder/IotMainWorkOrderAdd.vue

@@ -362,6 +362,7 @@
     @update:model-value="val => drawerVisible = val"
     :node-id="currentBomNodeId"
     :materials="materialList.filter(item => item.bomNodeId === currentBomNodeId)"
+    @delete="handleMaterialDelete"
   />
 </template>
 <script setup lang="ts">
@@ -796,6 +797,24 @@ const close = () => {
   push({ name: 'IotMainWorkOrder', params:{}})
 }
 
+// 添加处理物料删除的方法
+const handleMaterialDelete = (row: any) => {
+  // 找到要删除的物料索引
+  const index = materialList.value.findIndex(item =>
+    item.bomNodeId === row.bomNodeId &&
+    item.materialCode === row.materialCode
+  )
+
+  if (index !== -1) {
+    // 从物料列表中删除
+    materialList.value.splice(index, 1)
+    message.success('物料删除成功')
+
+    // 重新计算总成本
+    calculateTotalCost()
+  }
+}
+
 /** 更新责任人显示 */
 function updateDevicePersonsDisplay() {
   const allNames = new Set<string>()

+ 28 - 12
src/views/pms/maintain/material/MaterialSelect.vue

@@ -92,11 +92,8 @@
 import { DictDataVO } from '@/api/system/dict/dict.data'
 import { dateFormatter } from '@/utils/formatTime'
 import * as DictTypeApi from '@/api/system/dict/dict.type'
-import { checkPermi } from '@/utils/permission'
 import * as MaterialApi from '@/api/pms/material'
 import {DICT_TYPE} from "@/utils/dict";
-import {CrmStatisticCustomerAreaRespVO} from "@/api/crm/statistics/portrait";
-import {areaReplace} from "@/utils";
 
 const emit = defineEmits(['choose']) // 定义 success 事件,用于操作成功后的回调
 const dialogVisible = ref(false) // 弹窗的是否展示
@@ -105,11 +102,18 @@ const queryFormRef = ref() // 搜索的表单
 const list = ref<DictDataVO[]>([]) // 列表的数据
 const dictTypeList = ref<DictTypeApi.DictTypeVO[]>() // 字典类型的列表
 const total = ref(0) // 列表的总页数
-const queryParams = reactive({
+
+// 默认查询参数
+const defaultQueryParams = {
   pageNo: 1,
   pageSize: 10,
-  label: '',
+  name: '',
+  code: '',
   status: undefined,
+}
+
+const queryParams = reactive({
+  ...defaultQueryParams
 })
 
 const selectedRow = ref(null)
@@ -127,7 +131,16 @@ const handleRowClick = (row) => {
 }
 const open = async (type: string, id?: number) => {
   dialogVisible.value = true
-  selectedRow.value = ''
+  selectedRow.value = null
+
+  // 重置查询条件
+  Object.assign(queryParams, defaultQueryParams)
+
+  // 如果有表单引用,重置表单
+  if (queryFormRef.value) {
+    queryFormRef.value.resetFields()
+  }
+
   await getList()
 }
 defineExpose({ open }) // 提供 open 方法,用于打开弹窗
@@ -153,14 +166,17 @@ const choose = (row: DictDataVO) => {
 }
 /** 重置按钮操作 */
 const resetQuery = () => {
-  queryFormRef.value.resetFields()
+  // 使用默认参数重置查询条件
+  Object.assign(queryParams, defaultQueryParams)
+
+  // 如果有表单引用,重置表单
+  if (queryFormRef.value) {
+    queryFormRef.value.resetFields()
+  }
+
   handleQuery()
 }
-/** 初始化 **/
-// onMounted(async () => {
-//   // 查询字典(精简)列表
-//   dictTypeList.value = await DictTypeApi.getSimpleDictTypeList()
-// })
+
 </script>
 <style lang="scss">
 .no-label-radio .el-radio__label {