| | |
| | | placeholder="请选择" |
| | | clearable |
| | | filterable |
| | | popper-class="batch-no-select-popper" |
| | | style="width: 100%"> |
| | | <!-- 批次号是选中值,客户/合同是帮忙辨认批次的附加信息 --> |
| | | <el-option v-for="item in batchNoOptions" |
| | | :key="item" |
| | | :label="item" |
| | | :value="item" /> |
| | | :key="item.batchNo" |
| | | :label="item.batchNo" |
| | | :value="item.batchNo"> |
| | | <div class="batch-option"> |
| | | <div class="batch-option-title">{{ item.batchNo }}</div> |
| | | <div class="batch-option-line"> |
| | | 客户名称:{{ item.customerName || "--" }} |
| | | </div> |
| | | <div class="batch-option-line"> |
| | | 销售合同号:{{ item.salesContractNo || "--" }} |
| | | </div> |
| | | </div> |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="车挂牌号" |
| | | prop="trailerPlateNo" |
| | | :rules="isSalesOut |
| | | ? [{ required: true, message: '请输入车挂牌号', trigger: 'blur' }] |
| | | : []"> |
| | | prop="trailerPlateNo"> |
| | | <el-input v-model="formState.trailerPlateNo" |
| | | placeholder="请输入" |
| | | clearable /> |
| | |
| | | autoOilProduct.value = ""; |
| | | }; |
| | | |
| | | // 出库批次候选取该规格的入库批次 |
| | | // 出库批次候选取该规格的入库批次;除批次号外还带出批次的客户与合同,便于辨认 |
| | | const batchNoOptions = ref([]); |
| | | // 销售类出库的可用量提示(上次剩余 + 当前库存) |
| | | const availableQty = ref(null); |
| | |
| | | productModelId, |
| | | }).then(res => { |
| | | const records = res?.data?.records || []; |
| | | batchNoOptions.value = [ |
| | | ...new Set(records.map(item => item.batchNo).filter(Boolean)), |
| | | ]; |
| | | // 同一批次可能有多条库存行,按批次号去重,缺客户/合同的用同批次其它行补齐 |
| | | const batchMap = new Map(); |
| | | records.forEach(item => { |
| | | if (!item.batchNo) { |
| | | return; |
| | | } |
| | | const exist = batchMap.get(item.batchNo); |
| | | if (!exist) { |
| | | batchMap.set(item.batchNo, { |
| | | batchNo: item.batchNo, |
| | | customerName: item.customerName || "", |
| | | salesContractNo: item.salesContractNo || "", |
| | | }); |
| | | return; |
| | | } |
| | | if (!exist.customerName && item.customerName) { |
| | | exist.customerName = item.customerName; |
| | | } |
| | | if (!exist.salesContractNo && item.salesContractNo) { |
| | | exist.salesContractNo = item.salesContractNo; |
| | | } |
| | | }); |
| | | batchNoOptions.value = [...batchMap.values()]; |
| | | }); |
| | | }; |
| | | |
| | |
| | | } |
| | | } |
| | | |
| | | // 出库批次下拉选项:小卡片样式 |
| | | .batch-option { |
| | | padding: 8px 10px; |
| | | |
| | | .batch-option-title { |
| | | font-size: 14px; |
| | | font-weight: 600; |
| | | color: #303133; |
| | | margin-bottom: 4px; |
| | | } |
| | | |
| | | .batch-option-line { |
| | | font-size: 12px; |
| | | color: #909399; |
| | | line-height: 1.8; |
| | | } |
| | | } |
| | | |
| | | // 销售台账下拉选项:小卡片样式 |
| | | .ledger-option { |
| | | padding: 8px 10px; |
| | |
| | | } |
| | | } |
| | | } |
| | | |
| | | // 出库批次下拉面板(body 下,需全局样式) |
| | | .batch-no-select-popper { |
| | | .el-select-dropdown__item { |
| | | height: auto; |
| | | line-height: normal; |
| | | padding: 4px 0; |
| | | } |
| | | |
| | | .batch-option { |
| | | border: 1px solid #e4e7ed; |
| | | border-radius: 6px; |
| | | background-color: #fafbfc; |
| | | |
| | | &:hover { |
| | | border-color: #409eff; |
| | | background-color: #f0f7ff; |
| | | } |
| | | } |
| | | } |
| | | </style> |