|
@@ -1,5 +1,24 @@
|
|
<template>
|
|
<template>
|
|
<Dialog v-model="dialogVisible" title="选择物料" style="width: 1200px; min-height: 400px">
|
|
<Dialog v-model="dialogVisible" title="选择物料" style="width: 1200px; min-height: 400px">
|
|
|
|
+
|
|
|
|
+ <!-- 新增设备分类和BOM节点信息显示 -->
|
|
|
|
+ <div style="margin: 0 0px 15px; background: #f5f7fa; padding: 12px 20px; border-radius: 4px;">
|
|
|
|
+ <el-row>
|
|
|
|
+ <el-col :span="8">
|
|
|
|
+ <span style="font-weight: bold; margin-right: 10px;">设备编码:</span>
|
|
|
|
+ <span>{{ deviceCode }}</span>
|
|
|
|
+ </el-col>
|
|
|
|
+ <el-col :span="8">
|
|
|
|
+ <span style="font-weight: bold; margin-right: 10px;">设备名称:</span>
|
|
|
|
+ <span>{{ deviceName }}</span>
|
|
|
|
+ </el-col>
|
|
|
|
+ <el-col :span="8">
|
|
|
|
+ <span style="font-weight: bold; margin-right: 10px;">{{bomNodeLabel}}:</span>
|
|
|
|
+ <span>{{ bomNodeName }}</span>
|
|
|
|
+ </el-col>
|
|
|
|
+ </el-row>
|
|
|
|
+ </div>
|
|
|
|
+
|
|
<ContentWrap>
|
|
<ContentWrap>
|
|
<el-form
|
|
<el-form
|
|
class="-mb-15px"
|
|
class="-mb-15px"
|
|
@@ -176,6 +195,12 @@ const list = ref<WorkOrderBomMaterialApi.IotMainWorkOrderBomMaterialVO[]>([]) //
|
|
const total = ref(0) // 列表的总页数
|
|
const total = ref(0) // 列表的总页数
|
|
const tableRef = ref()
|
|
const tableRef = ref()
|
|
const selectedRows = ref<WorkOrderBomMaterialApi.IotMainWorkOrderBomMaterialVO[]>([]) // 多选数据(存储所有选中行的数组)
|
|
const selectedRows = ref<WorkOrderBomMaterialApi.IotMainWorkOrderBomMaterialVO[]>([]) // 多选数据(存储所有选中行的数组)
|
|
|
|
+
|
|
|
|
+const deviceName = ref('') // 设备名称
|
|
|
|
+const deviceCode = ref('') // 设备编码
|
|
|
|
+const bomNodeName = ref('') // 保养项 or 维修项 名称
|
|
|
|
+const bomNodeLabel = ref('') // 保养项 or 维修项 名称
|
|
|
|
+
|
|
const queryParams = reactive({
|
|
const queryParams = reactive({
|
|
pageNo: 1,
|
|
pageNo: 1,
|
|
pageSize: 10,
|
|
pageSize: 10,
|
|
@@ -187,6 +212,15 @@ const queryParams = reactive({
|
|
materialCode: '',
|
|
materialCode: '',
|
|
materialName: '',
|
|
materialName: '',
|
|
})
|
|
})
|
|
|
|
+
|
|
|
|
+// 保存初始查询参数用于重置
|
|
|
|
+const defaultQueryParams = {
|
|
|
|
+ materialName: '',
|
|
|
|
+ materialCode: '',
|
|
|
|
+ pageNo: 1,
|
|
|
|
+ pageSize: 10,
|
|
|
|
+}
|
|
|
|
+
|
|
const drawerVisible = ref<boolean>(false)
|
|
const drawerVisible = ref<boolean>(false)
|
|
const showDrawer = ref()
|
|
const showDrawer = ref()
|
|
const handleView = () => {
|
|
const handleView = () => {
|
|
@@ -226,13 +260,26 @@ const removeOnesFromKeys = (obj: Record<string, any>) => {
|
|
const handleRowClick = (row) => {
|
|
const handleRowClick = (row) => {
|
|
toggleRow(row)
|
|
toggleRow(row)
|
|
}
|
|
}
|
|
-const open = async (deptId: number, bomNodeId: number, deviceId: number) => {
|
|
|
|
- console.log('传递过来的数据:', deptId)
|
|
|
|
|
|
+const open = async (deptId: number, bomNodeId: number, row: any, type: string) => {
|
|
|
|
+ console.log('传递过来的数据:', row.deviceId)
|
|
|
|
+ Object.assign(queryParams, defaultQueryParams)
|
|
|
|
+
|
|
selectedRows.value = []
|
|
selectedRows.value = []
|
|
dialogVisible.value = true
|
|
dialogVisible.value = true
|
|
queryParams.deptId = deptId
|
|
queryParams.deptId = deptId
|
|
queryParams.bomNodeId = bomNodeId
|
|
queryParams.bomNodeId = bomNodeId
|
|
- queryParams.deviceId = deviceId
|
|
|
|
|
|
+ queryParams.deviceId = row.deviceId
|
|
|
|
+ if(type === 'repair'){
|
|
|
|
+ queryParams.deviceId = row.id
|
|
|
|
+ }
|
|
|
|
+ deviceName.value = row.deviceName
|
|
|
|
+ deviceCode.value = row.deviceCode
|
|
|
|
+ bomNodeName.value = row.name
|
|
|
|
+ if (type === 'maintenance') {
|
|
|
|
+ bomNodeLabel.value = '保养项'
|
|
|
|
+ } else if (type === 'repair') {
|
|
|
|
+ bomNodeLabel.value = '维修项'
|
|
|
|
+ }
|
|
await getList()
|
|
await getList()
|
|
}
|
|
}
|
|
|
|
|
|
@@ -311,37 +358,8 @@ const rowClassName = ({ row }: { row: any }) => {
|
|
return className
|
|
return className
|
|
}
|
|
}
|
|
|
|
|
|
-const handleInput = (value, obj) => {
|
|
|
|
- // 1. 过滤非法字符(只允许数字和小数点)
|
|
|
|
- let filtered = value.replace(/[^\d.]/g, '')
|
|
|
|
-
|
|
|
|
- // 2. 处理多个小数点的情况
|
|
|
|
- filtered = filtered.replace(/\.{2,}/g, '.')
|
|
|
|
-
|
|
|
|
- // 3. 限制小数点后最多两位
|
|
|
|
- let decimalParts = filtered.split('.')
|
|
|
|
- if (decimalParts.length > 1) {
|
|
|
|
- decimalParts = decimalParts.slice(0, 2)
|
|
|
|
- filtered = decimalParts.join('.')
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- // 4. 处理以小数点开头的情况(自动补0)
|
|
|
|
- if (filtered.startsWith('.')) {
|
|
|
|
- filtered = '0' + filtered
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- // 5. 更新绑定值(同时处理连续输入多个0的情况)
|
|
|
|
- formData.value[obj] = filtered.replace(/^0+(?=\d)/, '')
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
// 多选 切换行选中状态
|
|
// 多选 切换行选中状态
|
|
const toggleRow = (row) => {
|
|
const toggleRow = (row) => {
|
|
- /* const index = selectedRows.value.findIndex((item) => item.materialCode === row.materialCode)
|
|
|
|
- if (index > -1) {
|
|
|
|
- selectedRows.value.splice(index, 1) // 取消选中
|
|
|
|
- } else {
|
|
|
|
- selectedRows.value.push(row) // 选中
|
|
|
|
- } */
|
|
|
|
// 创建复合唯一标识
|
|
// 创建复合唯一标识
|
|
const getRowUniqueKey = (row) => {
|
|
const getRowUniqueKey = (row) => {
|
|
return `${row.factoryId}_${row.costCenterId}_${row.storageLocationId}_${row.materialCode}`
|
|
return `${row.factoryId}_${row.costCenterId}_${row.storageLocationId}_${row.materialCode}`
|
|
@@ -401,7 +419,10 @@ const choose = (row: IotMaintainMaterialVO) => {
|
|
}
|
|
}
|
|
/** 重置按钮操作 */
|
|
/** 重置按钮操作 */
|
|
const resetQuery = () => {
|
|
const resetQuery = () => {
|
|
- queryFormRef.value.resetFields()
|
|
|
|
|
|
+ if (queryFormRef.value) {
|
|
|
|
+ queryFormRef.value.resetFields()
|
|
|
|
+ }
|
|
|
|
+ Object.assign(queryParams, defaultQueryParams)
|
|
handleQuery()
|
|
handleQuery()
|
|
}
|
|
}
|
|
</script>
|
|
</script>
|