<script> import Decimal from 'decimal.js' import { parseTime } from '@/utils/ruoyi' export default { name: 'CheckDetailProd', props: { unloadTime: { type: String, required: false }, list: { type: Array, required: true }, attrList: { type: Array, required: true }, prodTypeList: { type: Array, required: true }, currencyMap: { type: Object, required: true }, unitMap:{ type: Object, required: true }, transportId: { type: Number, required: false }, }, data(){ return { feeDetail: null, showFeeDetailDialog: false } }, computed:{ getProdTypeName() { return (prodType) => { for (let index in this.prodTypeList) { let prodTypeItem = this.prodTypeList[index]; if (prodTypeItem.id == prodType) { return this.$l(prodTypeItem, "title"); } } }; }, getUnloadTime() { return this.unloadTime; }, // 显示特性 showAttrText(){ return ids => { if(!ids) return '' ids = !Array.isArray(ids) ? ids.split(',') : ids const attrMap = {} this.attrList.forEach(item => { attrMap[item.id] = this.$l(item, 'attrName') }) return ids.map(id => attrMap[id]).join(',') } }, }, methods:{ // 处理异常 handleError(row) { this.$emit("closeStart", "close"); this.$router.push({ path: `/order/pending?id=${row.orderId}`, }); }, // 获取储位名称 getLocationName(locationArr){ if(!locationArr || !locationArr.length) return '' let arr = [] locationArr.forEach(item => { arr.push(`${item.areaName}${item.locationName || ''}`) }) return Array.from(new Set(arr)).join(",") }, // 获取品名汇总数据 getProdSummary(e){ console.log("getProdSummart", e) // 货值 let worth = new Decimal(0) // 填单数据 let fillData = { num: new Decimal(0), weight: new Decimal(0), volume: new Decimal(0), quantity: new Decimal(0) } // 装柜/出货数据 let warehouseInData = { num: new Decimal(0), weight: new Decimal(0), volume: new Decimal(0), quantity: new Decimal(0) } // 到仓数据 let toWarehouseData = { checkNum: new Decimal(0), checkWeight: new Decimal(0), checkVolume: new Decimal(0), checkQuantity: new Decimal(0) } // 收费数据 let chargeData = { weight: new Decimal(0), volume: new Decimal(0), } this.list?.forEach(item => { worth = worth.plus(item.worth || 0) fillData.num = fillData.num.plus(item.num || 0) fillData.weight = fillData.weight.plus(item.weight || 0) fillData.volume = fillData.volume.plus(item.volume || 0) fillData.quantity = fillData.quantity.plus(item.quantity || 0) if(item.warehouseInInfoVO){ warehouseInData.num = warehouseInData.num.plus(item.warehouseInInfoVO.cartonsNum || 0) warehouseInData.weight = warehouseInData.weight.plus(item.warehouseInInfoVO.weight || 0) warehouseInData.volume = warehouseInData.volume.plus(item.warehouseInInfoVO.volume || 0) warehouseInData.quantity = warehouseInData.quantity.plus(item.warehouseInInfoVO.quantityAll || 0) } if (item.warehouseCheckInfoVO){ toWarehouseData.checkNum = toWarehouseData.checkNum.plus(item.warehouseCheckInfoVO.cartonsNum || 0) toWarehouseData.checkWeight = toWarehouseData.checkWeight.plus(item.warehouseCheckInfoVO.weight || 0) toWarehouseData.checkVolume = toWarehouseData.checkVolume.plus(item.warehouseCheckInfoVO.volume || 0) toWarehouseData.checkQuantity = toWarehouseData.checkQuantity.plus(item.warehouseCheckInfoVO.quantity || 0) } chargeData.weight = chargeData.weight.plus(item.chargeWeight || 0) chargeData.volume = chargeData.volume.plus(item.chargeVolume || 0) }) const summary = Array(8).fill(null) summary[3] = this.$t("合计") // 入仓 summary[4] = `${warehouseInData.num}${this.$t('箱')} ${warehouseInData.weight}KG ${warehouseInData.volume}m³ ${warehouseInData.quantity}${this.$t('个')}` // 到仓 summary[5] = `${toWarehouseData.checkNum}${this.$t('箱')} ${toWarehouseData.checkWeight}KG ${toWarehouseData.checkVolume}m³ ${toWarehouseData.checkQuantity}${this.$t('个')}` return summary } } } </script> <template> <div> <el-table :data="list" border show-summary :summary-method="getProdSummary" style="width: 100%"> <el-table-column :label="$t('序号')" width="90px"> <template slot-scope="scope">{{scope.$index + 1}}</template> </el-table-column> <el-table-column :label="$t('品名')" width="180px"> <template slot-scope="{row}"> <div>{{ getProdTypeName(row.prodType) }}</div> <div>{{row.prodTitleZh}}/{{row.prodTitleEn}}</div> </template> </el-table-column> <!--<el-table-column prop="prodTitleEn" :label="$t('品名')" />--> <el-table-column :label="$t('品牌')" width="90px"> <template slot-scope="{row}"> <template v-if="row.checkBrandName">{{row.checkBrandName}}</template> <dict-tag v-else :type="DICT_TYPE.ECW_IS_BRAND" :value="row.brandType" /> </template> </el-table-column> <el-table-column :label="$t('特性')" width="120px"> <template slot-scope="{row}"> {{showAttrText(row.warehouseInInfoVO ? row.warehouseInProdAttrIds : row.prodAttrIds)}} </template> </el-table-column> <el-table-column :label="$t('装柜/出货信息')" width="150px"> <template slot-scope="{row}"> <div v-if="row.warehouseInInfoVO"> {{row.warehouseInInfoVO.cartonsNum}}{{$t('箱')}} {{row.warehouseInInfoVO.weight}}Kg {{row.warehouseInInfoVO.volume}}m³ {{row.warehouseInInfoVO.quantityAll}}{{$t('个')}} </div> </template> </el-table-column> <el-table-column prop="sumNum" :label="$t('到仓信息')" width="150px"> <template slot-scope="{row}"> <div v-if="row.warehouseCheckInfoVO"> {{row.warehouseCheckInfoVO.cartonsNum}}{{$t('箱')}} {{row.warehouseCheckInfoVO.weight}}Kg {{row.warehouseCheckInfoVO.volume}}m³ {{row.warehouseCheckInfoVO.quantity}}{{$t('个')}} </div> </template> </el-table-column> <el-table-column :label="$t('到仓时间')" width="150px"> <template slot-scope="{row}"> {{parseTime(row.warehouseCheckInfoVO.checkTime)}} </template> </el-table-column> <el-table-column :label="$t('异常类型')" > <template slot-scope="{row}"> <div v-for="(itemException, i) in row.itemExceptionList" :key="i" :src="row.itemExceptionList" > <el-button type="text" size="small" @click="handleError(row)">{{itemException.exceptionType}}-{{itemException.result}}</el-button> </div> </template> </el-table-column> </el-table> </div> </template>