| | |
| | | </div> |
| | | </div> |
| | | </el-card> |
| | | |
| | | <div class="section-title" style="margin-bottom: 10px;">产品结构</div> |
| | | <ProductStructureDetail |
| | | class="product-structure-panel" |
| | | style="margin-bottom: 20px;" |
| | | embedded |
| | | :bom-id="route.query.bomId" |
| | | /> |
| | | <!-- 表格视图 --> |
| | | <div v-if="viewMode === 'table'" class="section-header"> |
| | | <div class="section-title">工艺路线项目列表</div> |
| | |
| | | <el-table-column label="是否质检" prop="isQuality" width="100"> |
| | | <template #default="scope"> |
| | | {{scope.row.isQuality ? "是" : "否"}} |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="是否入库" prop="inbound" width="100"> |
| | | <template #default="scope"> |
| | | {{ scope.row.inbound ? "是" : "否" }} |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="是否报工" prop="reportWork" width="100"> |
| | | <template #default="scope"> |
| | | {{ scope.row.reportWork ? "是" : "否" }} |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="操作" align="center" fixed="right" width="150"> |
| | |
| | | <!-- <span v-if="item.unit" class="product-unit">{{ item.unit }}</span> --> |
| | | </div> |
| | | <el-tag type="primary" class="product-tag" v-if="item.isQuality">质检</el-tag> |
| | | <div class="product-flags"> |
| | | <span>入库:{{ item.inbound ? "是" : "否" }}</span> |
| | | <span>报工:{{ item.reportWork ? "是" : "否" }}</span> |
| | | </div> |
| | | </div> |
| | | <div v-else class="product-info empty">暂无产品信息</div> |
| | | </div> |
| | |
| | | </el-form> |
| | | |
| | | <template #footer> |
| | | <el-button @click="closeDialog">取消</el-button> |
| | | <el-button type="primary" @click="handleSubmit" :loading="submitLoading">确定</el-button> |
| | | <el-button @click="closeDialog">取消</el-button> |
| | | </template> |
| | | </el-dialog> |
| | | |
| | |
| | | </template> |
| | | |
| | | <script setup> |
| | | import { ref, computed, getCurrentInstance, onMounted, onUnmounted, nextTick } from "vue"; |
| | | import { ref, computed, getCurrentInstance, onMounted, onUnmounted, nextTick, defineAsyncComponent } from "vue"; |
| | | import ProductSelectDialog from "@/views/basicData/product/ProductSelectDialog.vue"; |
| | | import { findProcessRouteItemList, addOrUpdateProcessRouteItem, sortProcessRouteItem, batchDeleteProcessRouteItem } from "@/api/productionManagement/processRouteItem.js"; |
| | | import { findProductProcessRouteItemList, deleteRouteItem, addRouteItem, addOrUpdateProductProcessRouteItem, sortRouteItem } from "@/api/productionManagement/productProcessRoute.js"; |
| | |
| | | |
| | | const route = useRoute() |
| | | const { proxy } = getCurrentInstance() || {}; |
| | | const ProductStructureDetail = defineAsyncComponent(() => import("@/views/productionManagement/productStructure/Detail/index.vue")); |
| | | |
| | | const routeId = computed(() => route.query.id); |
| | | const orderId = computed(() => route.query.orderId); |
| | |
| | | |
| | | // 编辑 |
| | | const handleEdit = (row) => { |
| | | console.log(1111, row.isQuality); |
| | | operationType.value = 'edit'; |
| | | form.value = { |
| | | id: row.id, |
| | |
| | | margin: 10px 0; |
| | | } |
| | | |
| | | .product-flags { |
| | | margin-top: 8px; |
| | | display: flex; |
| | | justify-content: center; |
| | | gap: 12px; |
| | | color: #606266; |
| | | font-size: 12px; |
| | | } |
| | | |
| | | .card-footer { |
| | | display: flex; |
| | | justify-content: space-around; |
| | |
| | | align-items: center; |
| | | } |
| | | |
| | | .product-structure-panel { |
| | | margin: 12px 0 20px; |
| | | } |
| | | |
| | | /* 工艺路线信息卡片样式 */ |
| | | .route-info-card { |
| | | margin-bottom: 20px; |