| | |
| | | data: query |
| | | }) |
| | | } |
| | | // 尺寸新增修改 |
| | | // 规格型号新增修改 |
| | | export function addOrEditProductModel(query) { |
| | | return request({ |
| | | url: '/basic/product/addOrEditProductModel', |
| | |
| | | data: query |
| | | }) |
| | | } |
| | | // 尺寸删除 |
| | | // 规格型号删除 |
| | | export function delProductModel(query) { |
| | | return request({ |
| | | url: '/basic/product/delProductModel', |
| | |
| | | data: query |
| | | }) |
| | | } |
| | | // 尺寸查询 |
| | | // 规格型号查询 |
| | | export function modelList(query) { |
| | | return request({ |
| | | url: '/basic/product/modelList', |
| | |
| | | unReceiptPaymentAmount: '未收付款金额', |
| | | templateName: '模板名称', |
| | | productCategory: '产品类别', |
| | | specificationModel: '尺寸', |
| | | specificationModel: '规格型号', |
| | | unit: '单位', |
| | | taxRate: '税率', |
| | | taxInclusiveUnitPrice: '含税单价', |
| | |
| | | 模板名称: 'templateName', |
| | | 产品类别: 'productCategory', |
| | | 产品名称: 'productCategory', |
| | | 尺寸: 'specificationModel', |
| | | 规格型号: 'specificationModel', |
| | | 单位: 'unit', |
| | | 税率: 'taxRate', |
| | | 含税单价: 'taxInclusiveUnitPrice', |
| | |
| | | initAttempts += 1 |
| | | |
| | | if (!isContainerReady()) { |
| | | // 等容器真正有尺寸(避免首屏初始化偏移/空白,热更新后才正常的情况) |
| | | // 等容器真正有规格型号(避免首屏初始化偏移/空白,热更新后才正常的情况) |
| | | // 最多重试约 3 秒,避免无限循环 |
| | | if (initAttempts < 60) { |
| | | initTimer = setTimeout(initChartWhenReady, 50) |
| | |
| | | emit('click', params) |
| | | }) |
| | | renderChart() |
| | | // setOption 后补一次 resize,确保首屏尺寸正确 |
| | | // setOption 后补一次 resize,确保首屏规格型号正确 |
| | | nextTick(() => { |
| | | if (chartInstance) chartInstance.resize() |
| | | }) |
| | |
| | | </el-row> |
| | | <el-row :gutter="20"> |
| | | <el-col :span="12"> |
| | | <el-form-item label="尺寸" |
| | | <el-form-item label="规格型号" |
| | | prop="size"> |
| | | <el-input-number v-model="form.size" |
| | | :min="100" |
| | |
| | | <div class="code-info"> |
| | | <p><strong>内容:</strong>{{ form.content }}</p> |
| | | <p><strong>类型:</strong>{{ form.type === 'qrcode' ? '二维码' : '防伪码' }}</p> |
| | | <p><strong>尺寸:</strong>{{ form.size }}x{{ form.size }}px</p> |
| | | <p><strong>规格型号:</strong>{{ form.size }}x{{ form.size }}px</p> |
| | | <p><strong>生成时间:</strong>{{ generateTime }}</p> |
| | | </div> |
| | | </div> |
| | |
| | | return |
| | | } |
| | | |
| | | // 初始化阶段经常出现:容器尚未可见/尺寸为 0(非全屏、tab、动画等) |
| | | // 初始化阶段经常出现:容器尚未可见/规格型号为 0(非全屏、tab、动画等) |
| | | // 这种情况下先不对齐,等 ResizeObserver / IntersectionObserver 再触发 |
| | | const rect = wrapperRef.value.getBoundingClientRect() |
| | | if (!rect.width || !rect.height) return |
| | |
| | | // 监听窗口 resize |
| | | window.addEventListener('resize', resizeHandler) |
| | | |
| | | // 使用 ResizeObserver 监听容器尺寸变化 |
| | | // 使用 ResizeObserver 监听容器规格型号变化 |
| | | nextTick(() => { |
| | | if (wrapperRef?.value && window.ResizeObserver) { |
| | | resizeObserver = new ResizeObserver(() => { |
| | |
| | | <div class="right"> |
| | | <div style="margin-bottom: 10px" v-if="isShowButton"> |
| | | <el-button type="primary" @click="openModelDia('add')"> |
| | | 新增尺寸 |
| | | 新增规格型号 |
| | | </el-button> |
| | | <ImportExcel :product-id="currentId" |
| | | @uploadSuccess="getModelList" /> |
| | |
| | | </template> |
| | | </el-dialog> |
| | | <el-dialog v-model="modelDia" |
| | | title="尺寸" |
| | | title="规格型号" |
| | | width="400px" |
| | | @close="closeModelDia" |
| | | @keydown.enter.prevent> |
| | |
| | | </el-col> |
| | | </el-row> |
| | | <el-col :span="24"> |
| | | <el-form-item label="尺寸:" |
| | | <el-form-item label="规格型号:" |
| | | prop="model"> |
| | | <el-input v-model="modelForm.model" |
| | | placeholder="请输入尺寸" |
| | | placeholder="请输入规格型号" |
| | | clearable |
| | | @keydown.enter.prevent /> |
| | | </el-form-item> |
| | |
| | | prop: "productCode", |
| | | }, |
| | | { |
| | | label: "尺寸", |
| | | label: "规格型号", |
| | | prop: "model", |
| | | }, |
| | | { |
| | |
| | | form.value.productName = |
| | | type === "edit" && data ? data.productName : ""; |
| | | }; |
| | | // 打开尺寸弹框 |
| | | // 打开规格型号弹框 |
| | | const openModelDia = (type, data) => { |
| | | modelOperationType.value = type; |
| | | modelDia.value = true; |
| | |
| | | getModelList(); |
| | | }; |
| | | |
| | | // 提交尺寸修改 |
| | | // 提交规格型号修改 |
| | | const submitModelForm = () => { |
| | | proxy.$refs.modelFormRef.validate(valid => { |
| | | if (valid) { |
| | |
| | | selectedRows.value = selection; |
| | | }; |
| | | |
| | | // 查询尺寸 |
| | | // 查询规格型号 |
| | | const pagination = obj => { |
| | | page.current = obj.page; |
| | | page.size = obj.limit; |
| | |
| | | tableLoading.value = false; |
| | | }); |
| | | }; |
| | | // 删除尺寸 |
| | | // 删除规格型号 |
| | | const handleDelete = () => { |
| | | let ids = []; |
| | | if (selectedRows.value.length > 0) { |
| | |
| | | <el-table-column prop="product" |
| | | label="产品名称" /> |
| | | <el-table-column prop="specification" |
| | | label="尺寸" /> |
| | | label="规格型号" /> |
| | | <el-table-column prop="unit" |
| | | label="单位" /> |
| | | <el-table-column prop="unitPrice" |
| | |
| | | <el-table-column prop="productCategory" |
| | | label="产品名称" /> |
| | | <el-table-column prop="specificationModel" |
| | | label="尺寸" /> |
| | | label="规格型号" /> |
| | | <el-table-column prop="unit" |
| | | label="单位" /> |
| | | <el-table-column prop="quantity" |
| | |
| | | label="产品名称" |
| | | show-overflow-tooltip /> |
| | | <el-table-column prop="specificationModel" |
| | | label="尺寸" |
| | | label="规格型号" |
| | | show-overflow-tooltip /> |
| | | <el-table-column prop="deliveryQuantity" |
| | | label="发货数量" |
| | |
| | | width="60" /> |
| | | <el-table-column label="产品大类" |
| | | prop="productCategory" /> |
| | | <el-table-column label="尺寸" |
| | | <el-table-column label="规格型号" |
| | | prop="specificationModel" /> |
| | | <el-table-column label="单位" |
| | | prop="unit" /> |
| | |
| | | width: 200 |
| | | }, |
| | | { |
| | | label: "尺寸", |
| | | label: "规格型号", |
| | | prop: "specificationModel", |
| | | width: 220 |
| | | }, |
| | |
| | | |
| | | const tableColumn = ref([ |
| | | { label: "产品大类", prop: "productCategory" }, |
| | | { label: "尺寸", prop: "specificationModel" }, |
| | | { label: "规格型号", prop: "specificationModel" }, |
| | | { label: "单位", prop: "unit" }, |
| | | { |
| | | label: "产品状态", |
| | |
| | | form.value.areaName = data.areaName; |
| | | } |
| | | }; |
| | | // 打开尺寸弹框 |
| | | // 打开规格型号弹框 |
| | | const openModelDia = (type, data,fatherId) => { |
| | | modelOperationType.value = type; |
| | | modelDia.value = true; |
| | |
| | | getModelList(true); |
| | | }; |
| | | |
| | | // 提交尺寸修改 |
| | | // 提交规格型号修改 |
| | | const submitModelForm = () => { |
| | | proxy.$refs.modelFormRef.validate((valid) => { |
| | | if (valid) { |
| | |
| | | selectedRows.value = selection; |
| | | }; |
| | | |
| | | // 查询尺寸 |
| | | // 查询规格型号 |
| | | const pagination = (obj) => { |
| | | page.current = obj.page; |
| | | page.size = obj.limit; |
| | |
| | | tableLoading.value = false; |
| | | }); |
| | | }; |
| | | // 删除尺寸 |
| | | // 删除规格型号 |
| | | const handleDelete = () => { |
| | | let ids = []; |
| | | if (selectedRows.value.length > 0) { |
| | |
| | | width: 200, |
| | | }, |
| | | { |
| | | label: "尺寸", |
| | | label: "规格型号", |
| | | prop: "code", |
| | | width: 200, |
| | | }, |
| | |
| | | width: 220, |
| | | }, |
| | | { |
| | | label: "尺寸", |
| | | label: "规格型号", |
| | | prop: "code", |
| | | width: 220, |
| | | }, |
| | |
| | | <el-table-column label="设备编号" prop="deviceCode" width="120" show-overflow-tooltip /> |
| | | <el-table-column label="设备名称" prop="deviceName" width="150" show-overflow-tooltip /> |
| | | <el-table-column label="设备类型" prop="deviceType" width="120" show-overflow-tooltip /> |
| | | <el-table-column label="尺寸" prop="specification" width="150" show-overflow-tooltip /> |
| | | <el-table-column label="规格型号" prop="specification" width="150" show-overflow-tooltip /> |
| | | <el-table-column label="当前压力(MPa)" prop="currentPressure" width="130" show-overflow-tooltip> |
| | | <template #default="scope"> |
| | | <span :class="getPressureClass(scope.row.currentPressure)"> |
| | |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="尺寸" prop="specification"> |
| | | <el-input v-model="deviceForm.specification" placeholder="请输入尺寸" /> |
| | | <el-form-item label="规格型号" prop="specification"> |
| | | <el-input v-model="deviceForm.specification" placeholder="请输入规格型号" /> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | |
| | | deviceCode: [{ required: true, message: '请输入设备编号', trigger: 'blur' }], |
| | | deviceName: [{ required: true, message: '请输入设备名称', trigger: 'blur' }], |
| | | deviceType: [{ required: true, message: '请选择设备类型', trigger: 'change' }], |
| | | specification: [{ required: true, message: '请输入尺寸', trigger: 'blur' }], |
| | | specification: [{ required: true, message: '请输入规格型号', trigger: 'blur' }], |
| | | designPressure: [{ required: true, message: '请输入设计压力', trigger: 'blur' }], |
| | | volume: [{ required: true, message: '请输入容积', trigger: 'blur' }] |
| | | } |
| | |
| | | return |
| | | } |
| | | |
| | | // 检查容器尺寸 |
| | | // 检查容器规格型号 |
| | | const container = this.$refs.chartContainer |
| | | if (container.offsetWidth === 0 || container.offsetHeight === 0) { |
| | | setTimeout(() => { |
| | |
| | | width: 200, |
| | | }, |
| | | { |
| | | label: "尺寸", |
| | | label: "规格型号", |
| | | prop: "deviceModel", |
| | | width: 200, |
| | | }, |
| | |
| | | width: 200, |
| | | }, |
| | | { |
| | | label: "尺寸", |
| | | label: "规格型号", |
| | | prop: "code", |
| | | width: 200, |
| | | }, |
| | |
| | | width: 220, |
| | | }, |
| | | { |
| | | label: "尺寸", |
| | | label: "规格型号", |
| | | prop: "code", |
| | | width: 220, |
| | | }, |
| | |
| | | width: 200, |
| | | }, |
| | | { |
| | | label: "尺寸", |
| | | label: "规格型号", |
| | | prop: "model", |
| | | width:200 |
| | | }, |
| | |
| | | show-overflow-tooltip |
| | | /> |
| | | <el-table-column |
| | | label="尺寸" |
| | | label="规格型号" |
| | | prop="deviceModel" |
| | | show-overflow-tooltip |
| | | /> |
| | |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="尺寸" prop="specification"> |
| | | <el-input v-model="form.specification" placeholder="请输入尺寸" /> |
| | | <el-form-item label="规格型号" prop="specification"> |
| | | <el-input v-model="form.specification" placeholder="请输入规格型号" /> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | |
| | | { label: "资产编号", prop: "assetCode", width: "130" }, |
| | | { label: "资产名称", prop: "assetName", width: "150" }, |
| | | { label: "资产类别", prop: "category", dataType: "slot", slot: "category" }, |
| | | { label: "尺寸", prop: "specification", width: "120" }, |
| | | { label: "规格型号", prop: "specification", width: "120" }, |
| | | { label: "资产原值", prop: "originalValue", dataType: "slot", slot: "originalValue" }, |
| | | { label: "累计折旧", prop: "accumulatedDepreciation", dataType: "slot", slot: "accumulatedDepreciation" }, |
| | | { label: "资产净值", prop: "netValue", dataType: "slot", slot: "netValue" }, |
| | |
| | | <el-table-column align="center" label="序号" type="index" width="60" /> |
| | | <el-table-column label="供应商名称" prop="supplierName" width="240" show-overflow-tooltip /> |
| | | <el-table-column label="产品" prop="productCategory" min-width="100" show-overflow-tooltip /> |
| | | <el-table-column label="尺寸" prop="specificationModel" min-width="200" show-overflow-tooltip /> |
| | | <el-table-column label="规格型号" prop="specificationModel" min-width="200" show-overflow-tooltip /> |
| | | <el-table-column label="单位" prop="unit" width="70" show-overflow-tooltip /> |
| | | <el-table-column label="入库数量" prop="inboundNum" width="90" show-overflow-tooltip /> |
| | | <el-table-column label="库存数量" prop="inboundNum0" width="90" show-overflow-tooltip /> |
| | |
| | | prop="productName" |
| | | show-overflow-tooltip |
| | | /> |
| | | <el-table-column label="尺寸" prop="model" show-overflow-tooltip /> |
| | | <el-table-column label="规格型号" prop="model" show-overflow-tooltip /> |
| | | <el-table-column label="批号" prop="batchNo" show-overflow-tooltip /> |
| | | <el-table-column label="单位" prop="unit" show-overflow-tooltip /> |
| | | <el-table-column |
| | |
| | | <thead> |
| | | <tr> |
| | | <th>产品名称</th> |
| | | <th>尺寸</th> |
| | | <th>规格型号</th> |
| | | <th>单位</th> |
| | | <th>单价</th> |
| | | <th>零售数量</th> |
| | |
| | | <el-table-column label="入库批次" prop="inboundBatches" width="160" show-overflow-tooltip /> |
| | | <el-table-column label="供应商名称" prop="supplierName" width="240" show-overflow-tooltip /> |
| | | <el-table-column label="产品大类" prop="productCategory" width="100" show-overflow-tooltip /> |
| | | <el-table-column label="尺寸" prop="specificationModel" width="200" show-overflow-tooltip /> |
| | | <el-table-column label="规格型号" prop="specificationModel" width="200" show-overflow-tooltip /> |
| | | <el-table-column label="单位" prop="unit" width="70" show-overflow-tooltip /> |
| | | <el-table-column label="入库数量" prop="inboundNum" width="90" show-overflow-tooltip /> |
| | | <el-table-column label="库存数量" prop="inboundNum0" width="90" show-overflow-tooltip /> |
| | |
| | | <el-table-column label="产品大类" |
| | | prop="productName" |
| | | show-overflow-tooltip/> |
| | | <el-table-column label="尺寸" |
| | | <el-table-column label="规格型号" |
| | | prop="model" |
| | | show-overflow-tooltip/> |
| | | <el-table-column label="批号" |
| | |
| | | prop="productName" |
| | | show-overflow-tooltip |
| | | /> |
| | | <el-table-column label="尺寸" prop="model" show-overflow-tooltip /> |
| | | <el-table-column label="规格型号" prop="model" show-overflow-tooltip /> |
| | | <el-table-column label="单位" prop="unit" show-overflow-tooltip /> |
| | | <el-table-column label="批号" prop="batchNo" show-overflow-tooltip /> |
| | | <el-table-column |
| | |
| | | <el-table-column align="center" type="selection" width="55" /> |
| | | <el-table-column align="center" label="序号" type="index" width="60" /> |
| | | <el-table-column label="产品大类" prop="productName" show-overflow-tooltip /> |
| | | <el-table-column label="尺寸" prop="model" show-overflow-tooltip /> |
| | | <el-table-column label="规格型号" prop="model" show-overflow-tooltip /> |
| | | <el-table-column label="批号" prop="batchNo" show-overflow-tooltip /> |
| | | <el-table-column label="单位" prop="unit" show-overflow-tooltip /> |
| | | <el-table-column label="库存数量" prop="qualitity" show-overflow-tooltip /> |
| | |
| | | prop="productName" |
| | | show-overflow-tooltip |
| | | /> |
| | | <el-table-column label="尺寸" prop="model" show-overflow-tooltip /> |
| | | <el-table-column label="规格型号" prop="model" show-overflow-tooltip /> |
| | | <el-table-column label="单位" prop="unit" show-overflow-tooltip /> |
| | | <el-table-column label="批号" prop="batchNo" show-overflow-tooltip /> |
| | | <el-table-column |
| | |
| | | // 点击详情 |
| | | const showDetailModal = (row) => { |
| | | if (!row?.productId || !row?.productModelId) { |
| | | proxy.$modal.msgError("当前数据缺少产品ID或尺寸ID"); |
| | | proxy.$modal.msgError("当前数据缺少产品ID或规格型号ID"); |
| | | return; |
| | | } |
| | | record.value = row; |
| | |
| | | <el-table-column align="center" type="selection" width="55" /> |
| | | <el-table-column align="center" label="序号" type="index" width="60" /> |
| | | <el-table-column label="产品大类" prop="productName" show-overflow-tooltip /> |
| | | <el-table-column label="尺寸" prop="model" show-overflow-tooltip /> |
| | | <el-table-column label="规格型号" prop="model" show-overflow-tooltip /> |
| | | <el-table-column label="单位" prop="unit" show-overflow-tooltip /> |
| | | <el-table-column label="库存数量" prop="qualitity" show-overflow-tooltip /> |
| | | <el-table-column label="冻结数量" prop="lockedQuantity" show-overflow-tooltip /> |
| | |
| | | <el-table-column label="产品大类" |
| | | prop="productName" |
| | | show-overflow-tooltip /> |
| | | <el-table-column label="尺寸" |
| | | <el-table-column label="规格型号" |
| | | prop="model" |
| | | show-overflow-tooltip /> |
| | | <el-table-column label="单位" |
| | |
| | | <el-table-column label="储气罐编码" prop="tankCode" width="120" show-overflow-tooltip /> |
| | | <el-table-column label="储气罐名称" prop="tankName" width="200" show-overflow-tooltip /> |
| | | <el-table-column label="储气罐类型" prop="tankType" width="120" show-overflow-tooltip /> |
| | | <el-table-column label="尺寸" prop="specificationModel" width="150" show-overflow-tooltip /> |
| | | <el-table-column label="规格型号" prop="specificationModel" width="150" show-overflow-tooltip /> |
| | | <el-table-column label="容积(m³)" prop="volume" width="100" show-overflow-tooltip /> |
| | | |
| | | <!-- 库存相关字段 --> |
| | |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="尺寸:" prop="specificationModel"> |
| | | <el-input v-model="form.specificationModel" placeholder="请输入尺寸" /> |
| | | <el-form-item label="规格型号:" prop="specificationModel"> |
| | | <el-input v-model="form.specificationModel" placeholder="请输入规格型号" /> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | |
| | | </el-row> |
| | | <el-row :gutter="20"> |
| | | <el-col :span="12"> |
| | | <el-form-item label="尺寸" prop="specification"> |
| | | <el-input v-model="formData.specification" placeholder="请输入尺寸" /> |
| | | <el-form-item label="规格型号" prop="specification"> |
| | | <el-input v-model="formData.specification" placeholder="请输入规格型号" /> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | |
| | | prop: "productCategory", |
| | | }, |
| | | { |
| | | label: "尺寸", |
| | | label: "规格型号", |
| | | prop: "specificationModel", |
| | | }, |
| | | { |
| | |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="产品大类" prop="productCategory" /> |
| | | <el-table-column label="尺寸" prop="specificationModel" width="150" /> |
| | | <el-table-column label="规格型号" prop="specificationModel" width="150" /> |
| | | <el-table-column label="单位" prop="unit" width="70" /> |
| | | <el-table-column label="数量" prop="quantity" width="70" /> |
| | | <el-table-column label="税率(%)" prop="taxRate" width="80" /> |
| | |
| | | width: 120, |
| | | }, |
| | | { |
| | | label: "尺寸", |
| | | label: "规格型号", |
| | | prop: "specificationModel", |
| | | width: 120, |
| | | }, |
| | |
| | | width="100" |
| | | /> |
| | | <el-table-column |
| | | label="尺寸" |
| | | label="规格型号" |
| | | prop="specificationModel" |
| | | show-overflow-tooltip |
| | | width="150" |
| | |
| | | showOverflowTooltip: true, |
| | | }, |
| | | { |
| | | label: "尺寸", |
| | | label: "规格型号", |
| | | prop: "specificationModel", |
| | | showOverflowTooltip: true, |
| | | width: 150 |
| | |
| | | <el-table :data="tableData" border v-loading="loading" @selection-change="handleSelectionChange"> |
| | | <el-table-column type="selection" width="55" align="center" /> |
| | | <el-table-column label="商品名称" prop="productName" /> |
| | | <el-table-column label="尺寸" prop="specification" /> |
| | | <el-table-column label="规格型号" prop="specification" /> |
| | | <el-table-column label="供应商名称" prop="supplierName" /> |
| | | <el-table-column label="原价格" prop="oldPrice" width="120"> |
| | | <template #default="{ row }">¥{{ row.oldPrice.toFixed(2) }}</template> |
| | |
| | | <el-option label="商品C" value="商品C" /> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="尺寸"> |
| | | <el-input v-model="formData.specification" placeholder="请输入尺寸" /> |
| | | <el-form-item label="规格型号"> |
| | | <el-input v-model="formData.specification" placeholder="请输入规格型号" /> |
| | | </el-form-item> |
| | | <el-form-item label="供应商名称"> |
| | | <el-select v-model="formData.supplierName" placeholder="请选择供应商" style="width: 100%"> |
| | |
| | | width: 150, |
| | | }, |
| | | { |
| | | label: "尺寸", |
| | | label: "规格型号", |
| | | prop: "specificationModel", |
| | | width: 150, |
| | | }, |
| | |
| | | width="60" /> |
| | | <el-table-column label="产品大类" |
| | | prop="productCategory" /> |
| | | <el-table-column label="尺寸" |
| | | <el-table-column label="规格型号" |
| | | prop="specificationModel" /> |
| | | <el-table-column label="单位" |
| | | prop="unit" /> |
| | |
| | | width="60" /> |
| | | <el-table-column label="产品大类" |
| | | prop="productCategory" /> |
| | | <el-table-column label="尺寸" |
| | | <el-table-column label="规格型号" |
| | | prop="specificationModel" /> |
| | | <el-table-column label="单位" |
| | | prop="unit" |
| | |
| | | </el-row> |
| | | <el-row :gutter="30"> |
| | | <el-col :span="24"> |
| | | <el-form-item label="尺寸:" |
| | | <el-form-item label="规格型号:" |
| | | prop="productModelId"> |
| | | <el-select v-model="productForm.productModelId" |
| | | placeholder="请选择" |
| | |
| | | ); |
| | | if (modelItem) { |
| | | productForm.value.productModelId = modelItem.id; |
| | | // 设置尺寸和单位 |
| | | // 设置规格型号和单位 |
| | | getProductModel(modelItem.id); |
| | | } |
| | | } |
| | |
| | | prop: 'productCategory', |
| | | }, |
| | | { |
| | | label: '尺寸', |
| | | label: '规格型号', |
| | | prop: 'specificationModel', |
| | | }, |
| | | { |
| | |
| | | width="150" /> |
| | | <el-table-column label="产品大类" |
| | | prop="productCategory" /> |
| | | <el-table-column label="尺寸" |
| | | <el-table-column label="规格型号" |
| | | prop="specificationModel" /> |
| | | <el-table-column label="单位" |
| | | prop="unit" |
| | |
| | | width="150" /> |
| | | <el-table-column label="产品大类" |
| | | prop="productCategory" /> |
| | | <el-table-column label="尺寸" |
| | | <el-table-column label="规格型号" |
| | | prop="specificationModel" /> |
| | | <el-table-column label="单位" |
| | | prop="unit" |
| | |
| | | show-overflow-tooltip |
| | | /> |
| | | <el-table-column |
| | | label="尺寸" |
| | | label="规格型号" |
| | | prop="specificationModel" |
| | | min-width="140" |
| | | show-overflow-tooltip |
| | |
| | | <el-input v-model="row.productName" placeholder="请输入商品名称" /> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="尺寸" width="150"> |
| | | <el-table-column label="规格型号" width="150"> |
| | | <template #default="{ row }"> |
| | | <el-input v-model="row.specification" placeholder="请输入尺寸" /> |
| | | <el-input v-model="row.specification" placeholder="请输入规格型号" /> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="到货数量" width="150"> |
| | |
| | | width="60" |
| | | /> |
| | | <el-table-column label="产品大类" prop="productCategory" /> |
| | | <el-table-column label="尺寸" prop="specificationModel" /> |
| | | <el-table-column label="规格型号" prop="specificationModel" /> |
| | | <el-table-column label="单位" prop="unit" width="70" /> |
| | | <el-table-column label="供应商" prop="supplierName" width="100" /> |
| | | <el-table-column label="采购数量" prop="quantity" width="100" /> |
| | |
| | | width: 150, |
| | | }, |
| | | { |
| | | label: "尺寸", |
| | | label: "规格型号", |
| | | prop: "specificationModel", |
| | | width: 150, |
| | | }, |
| | |
| | | prop="bomNo" /> |
| | | <el-table-column label="产品名称" |
| | | prop="productName" /> |
| | | <el-table-column label="尺寸" |
| | | <el-table-column label="规格型号" |
| | | prop="model" /> |
| | | </el-table> |
| | | <product-select-dialog v-if="dataValue.showProductDialog" |
| | |
| | | </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="model" /> |
| | | <el-table-column label="单位" prop="unit" /> |
| | | </el-table> |
| | | |
| | |
| | | minWidth: 160, |
| | | }, |
| | | { |
| | | label: "尺寸", |
| | | label: "规格型号", |
| | | prop: "productModelName", |
| | | minWidth: 140, |
| | | }, |
| | |
| | | minWidth: 100, |
| | | }, |
| | | { |
| | | label: "尺寸", |
| | | label: "规格型号", |
| | | prop: "productModelName", |
| | | minWidth: 100, |
| | | }, |
| | |
| | | <el-table-column label="客户名称" prop="customerName" width="200" /> |
| | | <!-- <el-table-column label="项目名称" prop="projectName" width="250" /> --> |
| | | <el-table-column label="产品大类" prop="productCategory" width="150" /> |
| | | <el-table-column label="尺寸" prop="specificationModel" width="200" /> |
| | | <el-table-column label="规格型号" prop="specificationModel" width="200" /> |
| | | <el-table-column label="绑定机器" prop="speculativeTradingName" width="120" /> |
| | | <el-table-column label="总数量" prop="quantity" width="100" align="right" /> |
| | | <el-table-column label="已排产" prop="schedulingNum" width="100" align="right" fixed="right" /> |
| | |
| | | </el-row> --> |
| | | <el-row :gutter="30"> |
| | | <el-col :span="12"> |
| | | <el-form-item label="尺寸:" prop="specificationModel"> |
| | | <el-form-item label="规格型号:" prop="specificationModel"> |
| | | <el-input v-model="form.specificationModel" placeholder="请输入" clearable disabled/> |
| | | </el-form-item> |
| | | </el-col> |
| | |
| | | form: { |
| | | projectName: "", |
| | | productCategory: "", |
| | | specificationModel: "", // 尺寸 |
| | | specificationModel: "", // 规格型号 |
| | | quantity: "", |
| | | schedulingNum: "", |
| | | schedulingUserId: "", |
| | |
| | | width: 160, |
| | | }, |
| | | { |
| | | label: "尺寸", |
| | | label: "规格型号", |
| | | prop: "specificationModel", |
| | | width: 120, |
| | | }, |
| | |
| | | width: 120, |
| | | }, |
| | | { |
| | | label: "产品尺寸", |
| | | label: "产品规格型号", |
| | | prop: "productModelName", |
| | | width: 120, |
| | | }, |
| | |
| | | <el-descriptions-item label="报工单号">{{ record.reportNo || '-' }}</el-descriptions-item> |
| | | <el-descriptions-item label="检验员">{{ record.userName || '-' }}</el-descriptions-item> |
| | | <el-descriptions-item label="产品名称">{{ record.productName || '-' }}</el-descriptions-item> |
| | | <el-descriptions-item label="尺寸">{{ record.model || '-' }}</el-descriptions-item> |
| | | <el-descriptions-item label="规格型号">{{ record.model || '-' }}</el-descriptions-item> |
| | | <el-descriptions-item label="数量">{{ record.quantity || 0 }} {{ record.unit || '-' }}</el-descriptions-item> |
| | | <el-descriptions-item label="检测单位">{{ record.checkCompany || '-' }}</el-descriptions-item> |
| | | <el-descriptions-item label="检测结果"> |
| | |
| | | <el-table-column v-if="!isView" align="center" type="selection" width="55" /> |
| | | <el-table-column align="center" label="序号" type="index" width="60" /> |
| | | <el-table-column label="产品大类" prop="productCategory" /> |
| | | <el-table-column label="尺寸" prop="specificationModel" /> |
| | | <el-table-column label="规格型号" prop="specificationModel" /> |
| | | <el-table-column label="单位" prop="unit" /> |
| | | <el-table-column label="数量" prop="quantity" /> |
| | | <el-table-column label="税率(%)" prop="taxRate" /> |
| | |
| | | </el-row> |
| | | <el-row :gutter="30"> |
| | | <el-col :span="24"> |
| | | <el-form-item label="尺寸:" prop="productModelId"> |
| | | <el-form-item label="规格型号:" prop="productModelId"> |
| | | <el-select v-model="productForm.productModelId" placeholder="请选择" clearable filterable @change="getProductModel"> |
| | | <el-option v-for="item in modelOptions" :key="item.id" :label="item.model" :value="item.id" /> |
| | | </el-select> |
| | |
| | | <el-table :data="productRows" border show-summary :summary-method="summarizeProductTable"> |
| | | <el-table-column align="center" label="序号" type="index" width="60" /> |
| | | <el-table-column label="产品大类" prop="productCategory" show-overflow-tooltip /> |
| | | <el-table-column label="尺寸" prop="specificationModel" show-overflow-tooltip /> |
| | | <el-table-column label="规格型号" prop="specificationModel" show-overflow-tooltip /> |
| | | <el-table-column label="单位" prop="unit" width="90" /> |
| | | <el-table-column label="数量" prop="quantity" width="90" /> |
| | | <el-table-column label="税率(%)" prop="taxRate" width="90" /> |
| | |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="尺寸:" prop="productModelId"> |
| | | <el-form-item label="规格型号:" prop="productModelId"> |
| | | <el-select v-model="form.productModelId" placeholder="请选择" clearable :disabled="operationType === 'edit'" |
| | | filterable readonly @change="handleChangeModel"> |
| | | <el-option v-for="item in modelOptions" :key="item.id" :label="item.model" :value="item.id" /> |
| | |
| | | proxy.$refs.formRef?.clearValidate(); |
| | | }); |
| | | |
| | | // 编辑模式下,并行加载尺寸和指标选项 |
| | | // 编辑模式下,并行加载规格型号和指标选项 |
| | | if (currentProductId.value) { |
| | | // 设置产品名称 |
| | | form.value.productName = findNodeById(productOptions.value, currentProductId.value); |
| | | |
| | | // 并行加载尺寸和指标选项 |
| | | // 并行加载规格型号和指标选项 |
| | | const params = { |
| | | productId: currentProductId.value, |
| | | inspectType: 2 |
| | |
| | | modelList({ id: currentProductId.value }), |
| | | qualityInspectDetailByProductId(params) |
| | | ]).then(([modelRes, testStandardRes]) => { |
| | | // 设置尺寸选项 |
| | | // 设置规格型号选项 |
| | | modelOptions.value = modelRes || []; |
| | | // 如果表单中已有 productModelId,设置对应的 model 和 unit |
| | | if (form.value.productModelId && modelOptions.value.length > 0) { |
| | |
| | | prop: "productName", |
| | | }, |
| | | { |
| | | label: "尺寸", |
| | | label: "规格型号", |
| | | prop: "model", |
| | | }, |
| | | { |
| | |
| | | }); |
| | | }; |
| | | |
| | | // 提交尺寸修改 |
| | | // 提交规格型号修改 |
| | | const submitModelForm = () => { |
| | | proxy.$refs.modelFormRef.validate((valid) => { |
| | | if (valid) { |
| | |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="尺寸:" prop="model"> |
| | | <el-form-item label="规格型号:" prop="model"> |
| | | <el-select v-model="form.model" placeholder="请选择" clearable :disabled="operationType === 'edit'" |
| | | filterable readonly @change="handleChangeModel"> |
| | | <el-option v-for="item in modelOptions" :key="item.id" :label="item.model" :value="item.id" /> |
| | |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="尺寸:" prop="model"> |
| | | <el-form-item label="规格型号:" prop="model"> |
| | | <el-input v-model="form.model" placeholder="请输入" clearable disabled/> |
| | | </el-form-item> |
| | | </el-col> |
| | |
| | | prop: "productName", |
| | | }, |
| | | { |
| | | label: "尺寸", |
| | | label: "规格型号", |
| | | prop: "model", |
| | | }, |
| | | { |
| | |
| | | </el-row> |
| | | <el-row :gutter="30"> |
| | | <el-col :span="12"> |
| | | <el-form-item label="尺寸:" |
| | | <el-form-item label="规格型号:" |
| | | prop="productModelId"> |
| | | <el-select v-model="form.productModelId" |
| | | placeholder="请选择" |
| | |
| | | }; |
| | | testStandardOptions.value = []; |
| | | tableData.value = []; |
| | | // 先确保产品树已加载,否则编辑时产品/尺寸无法反显 |
| | | // 先确保产品树已加载,否则编辑时产品/规格型号无法反显 |
| | | await getProductOptions(); |
| | | if (operationType.value === "edit") { |
| | | // 先保存 testStandardId,避免被清空 |
| | |
| | | // 先设置表单数据,但暂时清空 testStandardId,等选项加载完成后再设置 |
| | | form.value = { ...row, testStandardId: "" }; |
| | | currentProductId.value = row.productId || 0; |
| | | // 关键:编辑时加载尺寸下拉选项,才能反显 productModelId |
| | | // 关键:编辑时加载规格型号下拉选项,才能反显 productModelId |
| | | if (currentProductId.value) { |
| | | try { |
| | | const res = await modelList({ id: currentProductId.value }); |
| | |
| | | handleChangeModel(form.value.productModelId); |
| | | } |
| | | } catch (e) { |
| | | console.error("加载尺寸失败", e); |
| | | console.error("加载规格型号失败", e); |
| | | modelOptions.value = []; |
| | | } |
| | | } |
| | |
| | | prop: "productName", |
| | | }, |
| | | { |
| | | label: "尺寸", |
| | | label: "规格型号", |
| | | prop: "model", |
| | | }, |
| | | { |
| | |
| | | </el-row> |
| | | <el-row :gutter="30"> |
| | | <el-col :span="12"> |
| | | <el-form-item label="尺寸:" prop="productModelId"> |
| | | <el-form-item label="规格型号:" prop="productModelId"> |
| | | <el-select v-model="form.productModelId" placeholder="请选择" clearable :disabled="operationType === 'edit'" |
| | | filterable readonly @change="handleChangeModel"> |
| | | <el-option v-for="item in modelOptions" :key="item.id" :label="item.model" :value="item.id" /> |
| | |
| | | } |
| | | testStandardOptions.value = []; |
| | | tableData.value = []; |
| | | // 先确保产品树已加载,否则编辑时产品/尺寸无法反显 |
| | | // 先确保产品树已加载,否则编辑时产品/规格型号无法反显 |
| | | await getProductOptions(); |
| | | if (operationType.value === 'edit') { |
| | | // 先保存 testStandardId,避免被清空 |
| | | const savedTestStandardId = row.testStandardId; |
| | | form.value = {...row} |
| | | currentProductId.value = row.productId || 0 |
| | | // 关键:编辑时加载尺寸下拉选项,才能反显 productModelId |
| | | // 关键:编辑时加载规格型号下拉选项,才能反显 productModelId |
| | | if (currentProductId.value) { |
| | | try { |
| | | const res = await modelList({ id: currentProductId.value }); |
| | |
| | | handleChangeModel(form.value.productModelId); |
| | | } |
| | | } catch (e) { |
| | | console.error("加载尺寸失败", e); |
| | | console.error("加载规格型号失败", e); |
| | | modelOptions.value = []; |
| | | } |
| | | } |
| | |
| | | prop: "productName", |
| | | }, |
| | | { |
| | | label: "尺寸", |
| | | label: "规格型号", |
| | | prop: "model", |
| | | }, |
| | | { |
| | |
| | | |
| | | // 缩放比例 |
| | | const scaleRatio = ref(1) |
| | | // 设计尺寸(基准尺寸)- 根据实际设计稿调整 |
| | | // 设计规格型号(基准规格型号)- 根据实际设计稿调整 |
| | | const designWidth = 1920 |
| | | const designHeight = 1080 |
| | | |
| | |
| | | const container = document.querySelector('.scale-container') |
| | | if (!container) return |
| | | |
| | | // 获取容器的实际尺寸 |
| | | // 获取容器的实际规格型号 |
| | | const rect = container.getBoundingClientRect?.() |
| | | const containerWidth = container.clientWidth || rect?.width || window.innerWidth |
| | | const containerHeight = container.clientHeight || rect?.height || window.innerHeight |
| | |
| | | overflow: hidden; |
| | | } |
| | | |
| | | /* 内部内容区域 - 固定设计尺寸 */ |
| | | /* 内部内容区域 - 固定设计规格型号 */ |
| | | .data-dashboard { |
| | | position: relative; |
| | | width: 1920px; |
| | |
| | | |
| | | // 缩放比例 |
| | | const scaleRatio = ref(1) |
| | | // 设计尺寸(基准尺寸)- 根据实际设计稿调整 |
| | | // 设计规格型号(基准规格型号)- 根据实际设计稿调整 |
| | | const designWidth = 1920 |
| | | const designHeight = 1080 |
| | | |
| | |
| | | const container = document.querySelector('.scale-container') |
| | | if (!container) return |
| | | |
| | | // 获取容器的实际尺寸 |
| | | // 获取容器的实际规格型号 |
| | | const rect = container.getBoundingClientRect?.() |
| | | const containerWidth = container.clientWidth || rect?.width || window.innerWidth |
| | | const containerHeight = container.clientHeight || rect?.height || window.innerHeight |
| | |
| | | overflow: hidden; |
| | | } |
| | | |
| | | /* 内部内容区域 - 固定设计尺寸 */ |
| | | /* 内部内容区域 - 固定设计规格型号 */ |
| | | .data-dashboard { |
| | | position: relative; |
| | | width: 1920px; |
| | |
| | | |
| | | // 缩放比例 |
| | | const scaleRatio = ref(1) |
| | | // 设计尺寸(基准尺寸)- 根据实际设计稿调整 |
| | | // 设计规格型号(基准规格型号)- 根据实际设计稿调整 |
| | | const designWidth = 1920 |
| | | const designHeight = 1080 |
| | | |
| | |
| | | const container = document.querySelector('.scale-container') |
| | | if (!container) return |
| | | |
| | | // 获取容器的实际尺寸 |
| | | // 获取容器的实际规格型号 |
| | | const rect = container.getBoundingClientRect?.() |
| | | const containerWidth = container.clientWidth || rect?.width || window.innerWidth |
| | | const containerHeight = container.clientHeight || rect?.height || window.innerHeight |
| | |
| | | overflow: hidden; |
| | | } |
| | | |
| | | /* 内部内容区域 - 固定设计尺寸 */ |
| | | /* 内部内容区域 - 固定设计规格型号 */ |
| | | .data-dashboard { |
| | | position: relative; |
| | | width: 1920px; |
| | |
| | | |
| | | // 缩放比例 |
| | | const scaleRatio = ref(1) |
| | | // 设计尺寸(基准尺寸)- 根据实际设计稿调整 |
| | | // 设计规格型号(基准规格型号)- 根据实际设计稿调整 |
| | | const designWidth = 1920 |
| | | const designHeight = 1080 |
| | | |
| | |
| | | const container = document.querySelector('.scale-container') |
| | | if (!container) return |
| | | |
| | | // 获取容器的实际尺寸 |
| | | // 获取容器的实际规格型号 |
| | | const rect = container.getBoundingClientRect?.() |
| | | const containerWidth = container.clientWidth || rect?.width || window.innerWidth |
| | | const containerHeight = container.clientHeight || rect?.height || window.innerHeight |
| | |
| | | overflow: hidden; |
| | | } |
| | | |
| | | /* 内部内容区域 - 固定设计尺寸 */ |
| | | /* 内部内容区域 - 固定设计规格型号 */ |
| | | .data-dashboard { |
| | | position: relative; |
| | | width: 1920px; |
| | |
| | | |
| | | // 缩放比例 |
| | | const scaleRatio = ref(1) |
| | | // 设计尺寸(基准尺寸)- 根据实际设计稿调整 |
| | | // 设计规格型号(基准规格型号)- 根据实际设计稿调整 |
| | | const designWidth = 1920 |
| | | const designHeight = 1080 |
| | | |
| | |
| | | const container = document.querySelector('.scale-container') |
| | | if (!container) return |
| | | |
| | | // 获取容器的实际尺寸 |
| | | // 获取容器的实际规格型号 |
| | | const rect = container.getBoundingClientRect?.() |
| | | const containerWidth = container.clientWidth || rect?.width || window.innerWidth |
| | | const containerHeight = container.clientHeight || rect?.height || window.innerHeight |
| | |
| | | overflow: hidden; |
| | | } |
| | | |
| | | /* 内部内容区域 - 固定设计尺寸 */ |
| | | /* 内部内容区域 - 固定设计规格型号 */ |
| | | .data-dashboard { |
| | | position: relative; |
| | | width: 1920px; |
| | |
| | | |
| | | // 缩放比例 |
| | | const scaleRatio = ref(1) |
| | | // 设计尺寸(基准尺寸)- 根据实际设计稿调整 |
| | | // 设计规格型号(基准规格型号)- 根据实际设计稿调整 |
| | | const designWidth = 1920 |
| | | const designHeight = 1080 |
| | | |
| | |
| | | const container = document.querySelector('.scale-container') |
| | | if (!container) return |
| | | |
| | | // 获取容器的实际尺寸 |
| | | // 获取容器的实际规格型号 |
| | | const rect = container.getBoundingClientRect?.() |
| | | const containerWidth = container.clientWidth || rect?.width || window.innerWidth |
| | | const containerHeight = container.clientHeight || rect?.height || window.innerHeight |
| | |
| | | overflow: hidden; |
| | | } |
| | | |
| | | /* 内部内容区域 - 固定设计尺寸 */ |
| | | /* 内部内容区域 - 固定设计规格型号 */ |
| | | .data-dashboard { |
| | | position: relative; |
| | | width: 1920px; |
| | |
| | | data: [ |
| | | { value: 335, name: '物理性能' }, |
| | | { value: 310, name: '化学分析' }, |
| | | { value: 234, name: '尺寸测量' }, |
| | | { value: 234, name: '规格型号测量' }, |
| | | { value: 135, name: '外观检查' }, |
| | | { value: 148, name: '其他检测' } |
| | | ], |
| | |
| | | <el-table-column prop="product" |
| | | label="产品名称" /> |
| | | <el-table-column prop="specification" |
| | | label="尺寸" /> |
| | | label="规格型号" /> |
| | | <el-table-column prop="unit" |
| | | label="单位" /> |
| | | <el-table-column prop="unitPrice" |
| | |
| | | <el-table-column prop="productCategory" |
| | | label="产品名称" /> |
| | | <el-table-column prop="specificationModel" |
| | | label="尺寸" /> |
| | | label="规格型号" /> |
| | | <el-table-column prop="unit" |
| | | label="单位" /> |
| | | <el-table-column prop="quantity" |
| | |
| | | show-overflow-tooltip |
| | | /> |
| | | <el-table-column |
| | | label="尺寸" |
| | | label="规格型号" |
| | | prop="specificationModel" |
| | | show-overflow-tooltip |
| | | /> |
| | |
| | | <el-descriptions-item label="产品名称">{{ |
| | | detailRow.productName || "--" |
| | | }}</el-descriptions-item> |
| | | <el-descriptions-item label="尺寸">{{ |
| | | <el-descriptions-item label="规格型号">{{ |
| | | detailRow.specificationModel || "--" |
| | | }}</el-descriptions-item> |
| | | <el-descriptions-item label="发货类型">{{ |
| | |
| | | show-overflow-tooltip |
| | | /> |
| | | <el-table-column |
| | | label="尺寸" |
| | | label="规格型号" |
| | | prop="specificationModel" |
| | | min-width="160" |
| | | show-overflow-tooltip |
| | |
| | | <el-table-column label="销售合同号" prop="salesContractNo" show-overflow-tooltip width="180" /> |
| | | <el-table-column label="客户名称" prop="customerName" show-overflow-tooltip width="240" /> |
| | | <el-table-column label="产品大类" prop="productCategory" width="200" /> |
| | | <el-table-column label="尺寸" prop="specificationModel" width="160" show-overflow-tooltip /> |
| | | <el-table-column label="规格型号" prop="specificationModel" width="160" show-overflow-tooltip /> |
| | | <el-table-column label="发票号" prop="invoiceNo" width="200" show-overflow-tooltip /> |
| | | <el-table-column label="发票金额(元)" prop="invoiceTotal" show-overflow-tooltip :formatter="formattedNumber" |
| | | width="200" /> |
| | |
| | | /> |
| | | <el-table-column label="产品大类" prop="productCategory" /> |
| | | <el-table-column |
| | | label="尺寸" |
| | | label="规格型号" |
| | | prop="specificationModel" |
| | | width="150" |
| | | /> |
| | |
| | | </el-table-column> |
| | | <el-table-column label="产品大类" prop="productCategory" /> |
| | | <el-table-column |
| | | label="尺寸" |
| | | label="规格型号" |
| | | prop="specificationModel" |
| | | width="150" |
| | | /> |
| | |
| | | width="100" |
| | | /> |
| | | <el-table-column |
| | | label="尺寸" |
| | | label="规格型号" |
| | | prop="specificationModel" |
| | | show-overflow-tooltip |
| | | width="200" |
| | |
| | | width="100" |
| | | /> |
| | | <el-table-column |
| | | label="尺寸" |
| | | label="规格型号" |
| | | prop="specificationModel" |
| | | show-overflow-tooltip |
| | | width="200" |
| | |
| | | {align: "center", label: "出库单号", prop: "outboundBatches"}, |
| | | {align: "center", label: "批次号", prop: "batchNo"}, |
| | | {align: "center", label: "产品大类", prop: "productName"}, |
| | | {align: "center", label: "尺寸", prop: "model"}, |
| | | {align: "center", label: "规格型号", prop: "model"}, |
| | | {align: "center", label: "单位", prop: "unit", width: 80}, |
| | | {align: "center", label: "总数量", prop: "stockOutNum", width: 120}, |
| | | {align: "center", label: "已退货数量", prop: "totalReturnNum", width: 120, dataType: "slot", slot: "totalReturnNum"}, |
| | |
| | | <el-table-column align="center" prop="outboundBatches" label="出库单号" /> |
| | | <el-table-column align="center" prop="batchNo" label="批次号" /> |
| | | <el-table-column align="center" prop="productCategory" label="产品大类" /> |
| | | <el-table-column align="center" prop="specificationModel" label="尺寸" /> |
| | | <el-table-column align="center" prop="specificationModel" label="规格型号" /> |
| | | <el-table-column align="center" prop="unit" label="单位" /> |
| | | <el-table-column align="center" prop="stockOutNum" label="总数量" /> |
| | | <el-table-column align="center" prop="unQuantity" label="未退货数量" /> |
| | |
| | | {align: "center", label: "出库单号", prop: "outboundBatches" }, |
| | | {align: "center", label: "批次号", prop: "batchNo" }, |
| | | {align: "center", label: "产品大类", prop: "productCategory" }, |
| | | {align: "center", label: "尺寸", prop: "specificationModel" }, |
| | | {align: "center", label: "规格型号", prop: "specificationModel" }, |
| | | {align: "center", label: "单位", prop: "unit", width: 80 }, |
| | | {align: "center", label: "总数量", prop: "stockOutNum", width: 120 }, |
| | | {align: "center", label: "已退货数量", prop: "totalReturnNum", width: 120, dataType: "slot", slot: "totalReturnNum" }, |
| | |
| | | type="index" /> |
| | | <el-table-column label="产品大类" |
| | | prop="productCategory" /> |
| | | <el-table-column label="尺寸" |
| | | <el-table-column label="规格型号" |
| | | prop="specificationModel" /> |
| | | <el-table-column label="单位" |
| | | prop="unit" /> |
| | |
| | | width="60" /> |
| | | <el-table-column label="产品大类" |
| | | prop="productCategory" /> |
| | | <el-table-column label="尺寸" |
| | | <el-table-column label="规格型号" |
| | | prop="specificationModel" /> |
| | | <el-table-column label="单位" |
| | | prop="unit" /> |
| | |
| | | </el-row> |
| | | <el-row :gutter="30"> |
| | | <el-col :span="24"> |
| | | <el-form-item label="尺寸:" |
| | | <el-form-item label="规格型号:" |
| | | prop="productModelId"> |
| | | <el-select v-model="productForm.productModelId" |
| | | placeholder="请选择" |
| | |
| | | <thead> |
| | | <tr> |
| | | <th>产品名称</th> |
| | | <th>尺寸</th> |
| | | <th>规格型号</th> |
| | | <th>单位</th> |
| | | <th>单价</th> |
| | | <th>零售数量</th> |
| | |
| | | if (type === "edit") { |
| | | productForm.value = { ...row }; |
| | | productIndex.value = index; |
| | | // 编辑时根据产品大类名称反查 tree 节点 id,并加载尺寸列表 |
| | | // 编辑时根据产品大类名称反查 tree 节点 id,并加载规格型号列表 |
| | | try { |
| | | const options = |
| | | productOptions.value && productOptions.value.length > 0 |
| | |
| | | if (categoryId) { |
| | | const models = await modelList({ id: categoryId }); |
| | | modelOptions.value = models || []; |
| | | // 根据当前尺寸名称反查并设置 productModelId,便于下拉框显示已选值 |
| | | // 根据当前规格型号名称反查并设置 productModelId,便于下拉框显示已选值 |
| | | const currentModel = (modelOptions.value || []).find( |
| | | m => m.model === productForm.value.specificationModel |
| | | ); |
| | |
| | | } |
| | | } catch (e) { |
| | | // 加载失败时保持可编辑,不中断弹窗 |
| | | console.error("加载产品尺寸失败", e); |
| | | console.error("加载产品规格型号失败", e); |
| | | } |
| | | } else { |
| | | getProductOptions(); |
| | |
| | | <thead> |
| | | <tr> |
| | | <th>产品名称</th> |
| | | <th>尺寸</th> |
| | | <th>规格型号</th> |
| | | <th>单位</th> |
| | | <th>单价</th> |
| | | <th>零售数量</th> |
| | |
| | | > |
| | | <el-table-column align="center" label="序号" type="index" width="60" /> |
| | | <el-table-column prop="product" label="产品名称" min-width="180" show-overflow-tooltip /> |
| | | <el-table-column prop="specification" label="尺寸" min-width="140" show-overflow-tooltip /> |
| | | <el-table-column prop="specification" label="规格型号" min-width="140" show-overflow-tooltip /> |
| | | <el-table-column prop="paper" label="纸张" min-width="120" show-overflow-tooltip /> |
| | | <el-table-column prop="paperWeight" label="定量" min-width="100" show-overflow-tooltip /> |
| | | <el-table-column prop="unitPrice" label="单价" width="120" align="right"> |
| | |
| | | </el-form-item> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="specification" label="尺寸" width="200"> |
| | | <el-table-column prop="specification" label="规格型号" width="200"> |
| | | <template #default="scope"> |
| | | <el-form-item :prop="`products.${scope.$index}.specificationId`" class="product-table-form-item"> |
| | | <el-select |
| | |
| | | <h4>产品明细</h4> |
| | | <el-table :data="currentQuotation.products" border style="width: 100%"> |
| | | <el-table-column prop="product" label="产品名称" /> |
| | | <el-table-column prop="specification" label="尺寸" /> |
| | | <el-table-column prop="specification" label="规格型号" /> |
| | | <el-table-column prop="unit" label="单位" /> |
| | | <el-table-column prop="paper" label="纸张" /> |
| | | <el-table-column prop="paperWeight" label="定量" /> |
| | |
| | | |
| | | const productRowRules = { |
| | | productId: [{ required: true, message: '请选择产品名称', trigger: 'change' }], |
| | | specificationId: [{ required: true, message: '请选择尺寸', trigger: 'change' }], |
| | | specificationId: [{ required: true, message: '请选择规格型号', trigger: 'change' }], |
| | | unit: [{ required: true, message: '请填写单位', trigger: 'blur' }], |
| | | unitPrice: [{ required: true, message: '请填写单价', trigger: 'change' }] |
| | | } |
| | |
| | | if (label) { |
| | | row.product = label; |
| | | } |
| | | // 获取尺寸列表,设置到当前行的 modelOptions |
| | | // 获取规格型号列表,设置到当前行的 modelOptions |
| | | modelList({ id: value }).then((res) => { |
| | | row.modelOptions = res || []; |
| | | }); |
| | |
| | | ? Number(product.productId) |
| | | : findNodeIdByLabel(productOptions.value, productName) || '' |
| | | |
| | | // 如果有产品ID,加载对应的尺寸列表 |
| | | // 如果有产品ID,加载对应的规格型号列表 |
| | | let modelOptions = []; |
| | | let resolvedSpecificationId = product.specificationId || ''; |
| | | |
| | |
| | | } |
| | | } |
| | | } catch (error) { |
| | | console.error('加载尺寸失败:', error); |
| | | console.error('加载规格型号失败:', error); |
| | | } |
| | | } |
| | | |
| | |
| | | dieCuttingFee: Number(product.dieCuttingFee || 0), |
| | | grindingFee: Number(product.grindingFee || 0), |
| | | amount: product.amount || 0, |
| | | modelOptions: modelOptions // 为每行添加独立的尺寸列表 |
| | | modelOptions: modelOptions // 为每行添加独立的规格型号列表 |
| | | } |
| | | })) |
| | | form.subtotal = source.subtotal || 0 |
| | |
| | | dieCuttingFee: 0, |
| | | grindingFee: 0, |
| | | amount: 0, |
| | | modelOptions: [] // 为每行添加独立的尺寸列表 |
| | | modelOptions: [] // 为每行添加独立的规格型号列表 |
| | | }) |
| | | } |
| | | |
| | |
| | | </el-table-column> |
| | | <el-table-column prop="customerName" label="客户名称" width="180"/> |
| | | <el-table-column prop="productName" label="产品名称" width="200"/> |
| | | <el-table-column prop="specification" label="尺寸" width="120"/> |
| | | <el-table-column prop="specification" label="规格型号" width="120"/> |
| | | <el-table-column prop="basePrice" label="基础价格" width="100"> |
| | | <template #default="scope"> |
| | | ¥{{ scope.row.basePrice }}/吨 |
| | |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="尺寸" prop="specification"> |
| | | <el-input v-model="priceStrategyForm.specification" placeholder="请输入尺寸" :disabled="priceStrategyDialogMode === 'view'" /> |
| | | <el-form-item label="规格型号" prop="specification"> |
| | | <el-input v-model="priceStrategyForm.specification" placeholder="请输入规格型号" :disabled="priceStrategyDialogMode === 'view'" /> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | |
| | | <el-form-item v-if="activeData.size !== undefined && |
| | | (activeData.optionType === 'button' || |
| | | activeData.border || |
| | | activeData.tag === 'el-color-picker')" label="选项尺寸"> |
| | | activeData.tag === 'el-color-picker')" label="选项规格型号"> |
| | | <el-radio-group v-model="activeData.size"> |
| | | <el-radio-button label="large"> |
| | | 较大 |
| | |
| | | <el-form-item label="校验模型"> |
| | | <el-input v-model="formConf.formRules" placeholder="请输入校验模型" /> |
| | | </el-form-item> |
| | | <el-form-item label="表单尺寸"> |
| | | <el-form-item label="表单规格型号"> |
| | | <el-radio-group v-model="formConf.size"> |
| | | <el-radio-button label="large" value="较大" /> |
| | | <el-radio-button label="default" value="默认" /> |