From 8f9e65a587ee29b607010f83025456ee28c9b0d6 Mon Sep 17 00:00:00 2001
From: huminmin <mac@MacBook-Pro.local>
Date: 星期二, 13 一月 2026 16:28:35 +0800
Subject: [PATCH] 修改产品结构详情
---
src/views/productionManagement/productStructure/StructureEdit.vue | 280 ++++++++++++++++++++++++++++++-------------------------
src/views/productionManagement/productStructure/index.vue | 6
2 files changed, 156 insertions(+), 130 deletions(-)
diff --git a/src/views/productionManagement/productStructure/StructureEdit.vue b/src/views/productionManagement/productStructure/StructureEdit.vue
index 679a37c..4d07f5d 100644
--- a/src/views/productionManagement/productStructure/StructureEdit.vue
+++ b/src/views/productionManagement/productStructure/StructureEdit.vue
@@ -19,130 +19,147 @@
@click="cancelEdit"
style="margin-bottom: 10px">鍙栨秷
</el-button>
- <el-form ref="form"
- :model="dataValue">
- <el-table :data="dataValue.dataList"
- style="width: 100%">
- <el-table-column prop="productName"
- label="浜у搧"
- width="150" />
- <el-table-column prop="model"
- label="瑙勬牸"
- width="150">
- <template #default="{ row, $index }">
- <el-form-item v-if="dataValue.isEdit"
- :prop="`dataList.${$index}.model`"
- :rules="[{ required: true, message: '璇烽�夋嫨瑙勬牸', trigger: ['blur','change'] }]"
- style="margin: 0">
- <el-select v-model="row.model"
- placeholder="璇烽�夋嫨浜у搧"
- clearable
- :disabled="!dataValue.isEdit"
- style="width: 100%"
- @visible-change="(v) => { if (v) openDialog($index) }">
- <el-option v-if="row.model"
- :label="row.model"
- :value="row.model" />
- </el-select>
- </el-form-item>
- </template>
- </el-table-column>
- <el-table-column prop="processId"
- label="娑堣�楀伐搴�"
- width="150">
- <template #default="{ row, $index }">
- <el-form-item :prop="`dataList.${$index}.processId`"
- :rules="[{ required: true, message: '璇烽�夋嫨娑堣�楀伐搴�', trigger: 'change' }]"
- style="margin: 0">
- <el-select v-model="row.processId"
- placeholder="璇烽�夋嫨"
- filterable
- clearable
- style="width: 100%"
- :disabled="!dataValue.isEdit">
- <el-option v-for="item in dataValue.processOptions"
- :key="item.id"
- :label="item.name"
- :value="item.id" />
- </el-select>
- </el-form-item>
- </template>
- </el-table-column>
- <el-table-column prop="unitQuantity"
- label="鍗曚綅浜у嚭鎵�闇�鏁伴噺"
- width="150">
- <template #default="{ row, $index }">
- <el-form-item :prop="`dataList.${$index}.unitQuantity`"
- :rules="[{ required: true, message: '璇疯緭鍏ュ崟浣嶄骇鍑烘墍闇�鏁伴噺', trigger: ['blur','change'] }]"
- style="margin: 0">
- <el-input-number v-model="row.unitQuantity"
- :min="0"
- :precision="2"
- :step="1"
- controls-position="right"
+
+ <el-table
+ :data="tableData"
+ border
+ :preserve-expanded-content="false"
+ style="width: 100%"
+ >
+ <el-table-column type="expand">
+ <template #default="props">
+ <el-form ref="form"
+ :model="dataValue">
+ <el-table :data="dataValue.dataList"
+ style="width: 100%">
+ <el-table-column prop="productName"
+ label="浜у搧"
+ width="150" />
+ <el-table-column prop="model"
+ label="瑙勬牸"
+ width="150">
+ <template #default="{ row, $index }">
+ <el-form-item v-if="dataValue.isEdit"
+ :prop="`dataList.${$index}.model`"
+ :rules="[{ required: true, message: '璇烽�夋嫨瑙勬牸', trigger: ['blur','change'] }]"
+ style="margin: 0">
+ <el-select v-model="row.model"
+ placeholder="璇烽�夋嫨浜у搧"
+ clearable
+ :disabled="!dataValue.isEdit"
style="width: 100%"
- :disabled="!dataValue.isEdit" />
- </el-form-item>
- </template>
- </el-table-column>
- <el-table-column prop="demandedQuantity"
- label="闇�姹傛�婚噺"
- width="150">
- <template #default="{ row, $index }">
- <el-form-item :prop="`dataList.${$index}.demandedQuantity`"
- :rules="[{ required: true, message: '璇疯緭鍏ラ渶姹傛�婚噺', trigger: ['blur','change'] }]"
- style="margin: 0">
- <el-input-number v-model="row.demandedQuantity"
- :min="0"
- :precision="2"
- :step="1"
- controls-position="right"
+ @visible-change="(v) => { if (v) openDialog($index) }">
+ <el-option v-if="row.model"
+ :label="row.model"
+ :value="row.model" />
+ </el-select>
+ </el-form-item>
+ </template>
+ </el-table-column>
+ <el-table-column prop="processId"
+ label="娑堣�楀伐搴�"
+ width="150">
+ <template #default="{ row, $index }">
+ <el-form-item :prop="`dataList.${$index}.processId`"
+ :rules="[{ required: true, message: '璇烽�夋嫨娑堣�楀伐搴�', trigger: 'change' }]"
+ style="margin: 0">
+ <el-select v-model="row.processId"
+ placeholder="璇烽�夋嫨"
+ filterable
+ clearable
style="width: 100%"
- :disabled="!dataValue.isEdit" />
- </el-form-item>
- </template>
- </el-table-column>
- <el-table-column prop="unit"
- label="鍗曚綅"
- width="150">
- <template #default="{ row, $index }">
- <el-form-item :prop="`dataList.${$index}.unit`"
- :rules="[{ required: true, message: '璇疯緭鍏ュ崟浣�', trigger: ['blur','change'] }]"
- style="margin: 0">
- <el-input v-model="row.unit"
- placeholder="璇疯緭鍏ュ崟浣�"
- clearable
- :disabled="!dataValue.isEdit" />
- </el-form-item>
- </template>
- </el-table-column>
- <el-table-column prop="diskQuantity"
- label="鐩樻暟锛堢洏锛�"
- width="150">
- <template #default="{ row, $index }">
- <el-form-item :prop="`dataList.${$index}.diskQuantity`"
- :rules="[{ required: true, message: '璇疯緭鍏ョ洏鏁�', trigger: ['blur','change'] }]"
- style="margin: 0">
- <el-input-number v-model="row.diskQuantity"
- :min="0"
- :precision="0"
- :step="1"
- controls-position="right"
- style="width: 100%"
- :disabled="!dataValue.isEdit" />
- </el-form-item>
- </template>
- </el-table-column>
- <el-table-column label="鎿嶄綔">
- <template #default="{ row, $index }">
- <el-button type="danger"
- text
- @click="dataValue.dataList.splice($index, 1)">鍒犻櫎
- </el-button>
- </template>
- </el-table-column>
- </el-table>
- </el-form>
+ :disabled="!dataValue.isEdit">
+ <el-option v-for="item in dataValue.processOptions"
+ :key="item.id"
+ :label="item.name"
+ :value="item.id" />
+ </el-select>
+ </el-form-item>
+ </template>
+ </el-table-column>
+ <el-table-column prop="unitQuantity"
+ label="鍗曚綅浜у嚭鎵�闇�鏁伴噺"
+ width="150">
+ <template #default="{ row, $index }">
+ <el-form-item :prop="`dataList.${$index}.unitQuantity`"
+ :rules="[{ required: true, message: '璇疯緭鍏ュ崟浣嶄骇鍑烘墍闇�鏁伴噺', trigger: ['blur','change'] }]"
+ style="margin: 0">
+ <el-input-number v-model="row.unitQuantity"
+ :min="0"
+ :precision="2"
+ :step="1"
+ controls-position="right"
+ style="width: 100%"
+ :disabled="!dataValue.isEdit" />
+ </el-form-item>
+ </template>
+ </el-table-column>
+ <el-table-column prop="demandedQuantity"
+ label="闇�姹傛�婚噺"
+ width="150">
+ <template #default="{ row, $index }">
+ <el-form-item :prop="`dataList.${$index}.demandedQuantity`"
+ :rules="[{ required: true, message: '璇疯緭鍏ラ渶姹傛�婚噺', trigger: ['blur','change'] }]"
+ style="margin: 0">
+ <el-input-number v-model="row.demandedQuantity"
+ :min="0"
+ :precision="2"
+ :step="1"
+ controls-position="right"
+ style="width: 100%"
+ :disabled="!dataValue.isEdit" />
+ </el-form-item>
+ </template>
+ </el-table-column>
+ <el-table-column prop="unit"
+ label="鍗曚綅"
+ width="150">
+ <template #default="{ row, $index }">
+ <el-form-item :prop="`dataList.${$index}.unit`"
+ :rules="[{ required: true, message: '璇疯緭鍏ュ崟浣�', trigger: ['blur','change'] }]"
+ style="margin: 0">
+ <el-input v-model="row.unit"
+ placeholder="璇疯緭鍏ュ崟浣�"
+ clearable
+ :disabled="!dataValue.isEdit" />
+ </el-form-item>
+ </template>
+ </el-table-column>
+ <el-table-column prop="diskQuantity"
+ label="鐩樻暟锛堢洏锛�"
+ width="150">
+ <template #default="{ row, $index }">
+ <el-form-item :prop="`dataList.${$index}.diskQuantity`"
+ :rules="[{ required: true, message: '璇疯緭鍏ョ洏鏁�', trigger: ['blur','change'] }]"
+ style="margin: 0">
+ <el-input-number v-model="row.diskQuantity"
+ :min="0"
+ :precision="0"
+ :step="1"
+ controls-position="right"
+ style="width: 100%"
+ :disabled="!dataValue.isEdit" />
+ </el-form-item>
+ </template>
+ </el-table-column>
+ <el-table-column label="鎿嶄綔">
+ <template #default="{ row, $index }">
+ <el-button type="danger"
+ text
+ @click="dataValue.dataList.splice($index, 1)">鍒犻櫎
+ </el-button>
+ </template>
+ </el-table-column>
+ </el-table>
+ </el-form>
+ </template>
+ </el-table-column>
+ <el-table-column label="浜у搧缂栫爜" prop="productCode" />
+ <el-table-column label="浜у搧鍚嶇О" prop="productName" />
+ <el-table-column label="瑙勬牸鍨嬪彿" prop="model" />
+ <el-table-column label="鍗曚綅" prop="unit" />
+ </el-table>
+
<product-select-dialog v-if="dataValue.showProductDialog"
v-model:model-value="dataValue.showProductDialog"
@confirm="handleProduct" />
@@ -187,8 +204,8 @@
type: Boolean,
default: false,
},
- productModelId: {
- type: Number,
+ record: {
+ type: Object,
required: true,
},
});
@@ -213,18 +230,27 @@
isEdit: false,
});
+ const tableData = [
+ {
+ productName: props.record.productName,
+ model: props.record.model,
+ unit: props.record.unit,
+ productCode: props.record.productCode,
+ }
+ ]
+
const openDialog = index => {
dataValue.currentRowIndex = index;
dataValue.showProductDialog = true;
};
const fetchData = async () => {
- const { data } = await queryList(props.productModelId);
+ const { data } = await queryList(props.record.id);
dataValue.dataList = data;
};
const fetchProcessOptions = async () => {
- const { data } = await list(props.productModelId);
+ const { data } = await list(props.record.id);
dataValue.processOptions = data;
};
@@ -245,7 +271,7 @@
dataValue.loading = true;
if (valid) {
add({
- parentId: props.productModelId,
+ parentId: props.record.id,
productStructureList: dataValue.dataList || [],
}).then(res => {
ElMessage.success("淇濆瓨鎴愬姛");
diff --git a/src/views/productionManagement/productStructure/index.vue b/src/views/productionManagement/productStructure/index.vue
index 6ba2e4a..b17c1f0 100644
--- a/src/views/productionManagement/productStructure/index.vue
+++ b/src/views/productionManagement/productStructure/index.vue
@@ -15,14 +15,14 @@
type="primary"
text
@click="() =>{
- currentRowId = row.id;
+ currentRow = row;
showEdit = true;
}"
>{{ row.productName }}
</el-button>
</template>
</PIMTable>
- <StructureEdit v-if="showEdit" v-model:show-model="showEdit" :product-model-id="currentRowId"/>
+ <StructureEdit v-if="showEdit" v-model:show-model="showEdit" :record="currentRow"/>
</div>
</template>
@@ -57,7 +57,7 @@
const tableLoading = ref(false);
const showEdit = ref(false);
const selectedRows = ref([]);
-const currentRowId = ref(0);
+const currentRow = ref({});
const page = reactive({
current: 1,
size: 10,
--
Gitblit v1.9.3