| | |
| | | <el-icon><Plus /></el-icon> |
| | | 新增价格 |
| | | </el-button> |
| | | <el-button type="success" @click="openBatchDiscountDialog"> |
| | | <!-- <el-button type="success" @click="openBatchDiscountDialog"> |
| | | <el-icon><Discount /></el-icon> |
| | | 批量折扣 |
| | | </el-button> |
| | | </el-button> --> |
| | | <el-button type="info" @click="exportData"> |
| | | <el-icon><Download /></el-icon> |
| | | 导出数据 |
| | |
| | | <div class="product-info"> |
| | | <div class="product-name">{{ row.productName }}</div> |
| | | <div class="product-spec">{{ row.specification }}</div> |
| | | <!-- <div class="product-code">编码: {{ row.productCode }}</div> --> |
| | | </div> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="供应商" prop="supplierName" width="200" /> |
| | | <el-table-column label="基础价格" width="120" align="right"> |
| | | <el-table-column label="基础价格(不含税)" width="150" align="right"> |
| | | <template #default="{ row }"> |
| | | <span class="price-text">¥{{ row.basePrice }}</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="折扣信息" width="150"> |
| | | <el-table-column label="折扣信息" width="120" align="center"> |
| | | <template #default="{ row }"> |
| | | <div v-if="row.discountType"> |
| | | <el-tag :type="getDiscountTagType(row.discountType)" size="small"> |
| | |
| | | <span v-else class="no-discount">无折扣</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="实际价格" width="120" align="right"> |
| | | <!-- <el-table-column label="实际价格(不含税)" prop="actuallyPrice" width="150" align="right"> --> |
| | | <!-- </el-table-column> --> |
| | | <el-table-column label="实际价格(不含税)" width="150" align="right"> |
| | | <template #default="{ row }"> |
| | | <span class="final-price">¥{{ calculateFinalPrice(row) }}</span> |
| | | <!-- <span class="final-price">¥{{ calculateFinalPrice(row) }}</span> --> |
| | | <span class="final-price" >¥{{ row.actuallyPrice?row.actuallyPrice:row.basePrice }}</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="价格控制" width="120"> |
| | |
| | | </div> --> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="生效时间" prop="effectiveTime" width="180" /> |
| | | <el-table-column label="更新时间" prop="updateTime" width="180" sortable /> |
| | | <el-table-column label="生效时间" prop="effectiveTime" width="100" align="center" /> |
| | | <el-table-column label="更新时间" prop="updateTime" width="160" sortable align="center" /> |
| | | <el-table-column label="备注" width="200" prop="remark" align="center" show-overflow-tooltip /> |
| | | <el-table-column label="操作" width="250" align="center" fixed="right"> |
| | | <template #default="{ row }"> |
| | | <el-button type="primary" link @click="openDialog('edit', row)"> |
| | |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="商品编码" prop="productCode"> |
| | | <el-input v-model="formData.productCode" placeholder="请输入商品编码" /> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row :gutter="20"> |
| | | <el-col :span="12"> |
| | | <el-form-item label="规格型号" prop="specification"> |
| | | <el-select |
| | | v-model="formData.specification" |
| | |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row :gutter="20"> |
| | | <el-col :span="12"> |
| | | <el-form-item label="供应商" prop="supplierId"> |
| | | <el-select |
| | |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row :gutter="20"> |
| | | <el-col :span="12"> |
| | | <el-form-item label="基础价格" prop="basePrice"> |
| | | <el-input-number v-model="formData.basePrice" :min="0" :precision="2" placeholder="请输入基础价格" style="width: 100%" /> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row :gutter="20"> |
| | | <el-col :span="12"> |
| | | <el-form-item label="单位"> |
| | | <el-input v-model="formData.unit" placeholder="请输入单位" /> |
| | |
| | | const formData = reactive({ |
| | | productId: null, |
| | | productName: '', |
| | | productCode: '', |
| | | specification: '', |
| | | supplierId: null, |
| | | supplierName: '', |
| | |
| | | // 表单验证规则 |
| | | const formRules = { |
| | | productId: [{ required: true, message: '请选择商品名称', trigger: 'change' }], |
| | | productCode: [{ required: true, message: '请输入商品编码', trigger: 'blur' }], |
| | | supplierId: [{ required: true, message: '请选择供应商', trigger: 'change' }], |
| | | basePrice: [{ required: true, message: '请输入基础价格', trigger: 'blur' }], |
| | | effectiveTime: [{ required: true, message: '请选择生效时间', trigger: 'change' }], |
| | |
| | | const selectedProduct = findNodeById(productOptions.value, value); |
| | | if (selectedProduct) { |
| | | formData.productName = selectedProduct.productName; |
| | | formData.productCode = selectedProduct.productCode; |
| | | } |
| | | modelList({ id: value }).then((res) => { |
| | | modelOptions.value = res; |
| | | }); |
| | | formData.specification = ""; |
| | | } else { |
| | | formData.productName = ""; |
| | | formData.productCode = ""; |
| | | modelOptions.value = []; |
| | | } |
| | | }; |
| | |
| | | Object.assign(formData, { |
| | | productId: null, |
| | | productName: '', |
| | | productCode: '', |
| | | specification: '', |
| | | supplierId: null, |
| | | supplierName: '', |
| | |
| | | |
| | | const handleSubmit = async () => { |
| | | if (!formRef.value) return |
| | | formData.actualPrice = calculateFinalPrice(formData) |
| | | formData.actuallyPrice = Number(calculateFinalPrice(formData)) |
| | | if( formData.discountType === ''){ |
| | | formData.discountEndTime = '2099-12-31 23:59:59' |
| | | } |
| | | |
| | | |
| | | try { |
| | | await formRef.value.validate() |
| | | submitLoading.value = true |