Commit 5d010348 authored by 1483922988@qq.com's avatar 1483922988@qq.com
parents d176ce48 6a4365e9
......@@ -1052,6 +1052,14 @@ export function getOrderItemDeleted(orderId){
})
}
//退仓品名列表
export function getOrderCheckInfo(orderId){
return request({
url: '/ecw/order/order-check-info/' + orderId,
method: 'get',
})
}
// 打包页面订单数据统计
export function getPackStatistics(orderId){
return request({
......
......@@ -171,6 +171,7 @@ export const DICT_TYPE = {
// order
ORDER_TYPE: "order_type", // 订单类型
PRODUCT_RECORD_ATTRIBUTE: "product_record_attribute", //产品备案属性
PROD_QUERY_TITLE_ZH_FIELD: 'prod_query_title_zh_field', // 商品列表商品中文名称查询类型
CONTROL_GOODS_STATUS: "control_goods_status", //控货状态
DISBURSEMENT_TYPE: "disbursement_type", //垫付类型
DRAWEE: "drawee", // 付款人
......
<script>
import Decimal from 'decimal.js'
import { parseTime } from '@/utils/ruoyi'
export default {
name: 'CheckDetailProd',
props: {
list: {
type: Array,
required: true
},
attrList: {
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:{
// 显示特性
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:{
closeFeeDetail(){
this.showFeeDetailDialog = null
},
showFeeDetail(row, type){
console.log("showFeeDetail", row, type)
this.showFeeDetailDialog = true
const freight = [], clearance = []
let freightFields = []
let clearanceFields = []
const brandType = row.warehouseInInfoVO ? row.feeType : row.brandType
// 不是特价则显示其他字段
freightFields = [
// {field: 'oneSeaFreight', label: this.$t('成交单价')},
{field: 'originalSeaFreight', label: this.$t('默认单价(无牌无液无电)')},
// {field: 'brandFreightPrice', label: this.$t('品牌加价')},
{field: 'liquidFreightPrice', label: this.$t('液体加价')},
{field: 'electrifiedFreightPrice', label: this.$t('带电加价')},
{field: 'discountFreightPrice', label: this.$t('优惠活动减免')},
{field: 'plainCommission', label: this.$t('明佣')},
{field: 'hiddenCommission', label: this.$t('暗佣')}
]
// 批量加价
if(row.markupSeaFreight){
freightFields.push({field: 'markupSeaFreight', label: this.$t('批量加价')})
}
// 品牌加价
if(row['brandFreightPrice'] && row['brandFreightPrice'] > 0){
freightFields.push({field: 'brandFreightPrice', label: brandType == 1 ? this.$t('有品牌加价') : this.$t('中性品牌加价')})
}
// 有减免金额才显示优惠后单价
if(row['discountFreightPrice'] && row['discountFreightPrice'] > 0){
freightFields.push({field: 'afterDiscountSeaFreight', label: this.$t('优惠后单价')})
}
// 包装加价
if(row['packagingFreightPrice'] && row['packagingFreightPrice'] > 0){
freightFields.push({field: 'packagingFreightPrice', label: this.$t('包装加价')})
}
freightFields.push({field: 'oneSeaFreight', label: this.$t('成交单价')})
console.log({freightFields})
freightFields.forEach(item => {
if(row[item.field]){
freight.push({
label: item.label,
value: row[item.field],
currency: row.seaFreightCurrency,
volume: row.seaFreightVolume,
// 特价通过四个字段标识,任一为true则为特价
remark: item.field == 'oneSeaFreight' && (row.specialPriceType || row.splitCustomPriceType || row.channelManualPricing) ? this.$t('特价') : null
})
}
})
clearanceFields = [
{field: 'originalClearanceFreight', label: this.$t('默认单价(无牌无液无电)')},
// {field: 'brandClearanceFeePrice', label: this.$t('品牌加价')},
{field: 'liquidClearanceFeePrice', label: this.$t('液体加价')},
{field: 'electrifiedClearanceFeePrice', label: this.$t('带电加价')},
{field: 'discountClearanceFeePrice', label: this.$t('优惠活动减免')}
]
// 批量加价
if(row.markupClearanceFreight){
clearanceFields.push({field: 'markupClearanceFreight', label: this.$t('批量加价')})
}
// 品牌加价
if(row['brandClearanceFeePrice'] && row['brandClearanceFeePrice'] > 0){
clearanceFields.push({field: 'brandClearanceFeePrice', label: brandType == 1 ? this.$t('有品牌加价') : this.$t('中性品牌加价')})
}
if(row['discountClearanceFeePrice'] && row['discountClearanceFeePrice'] > 0){
clearanceFields.push({field: 'afterDiscountClearanceFreight', label: this.$t('优惠后单价')})
}
// 包装加价
if(row['packagingClearanceFeePrice'] && row['packagingClearanceFeePrice'] > 0){
clearanceFields.push({field: 'packagingClearanceFeePrice', label: this.$t('包装加价')})
}
clearanceFields.push({field: 'oneClearanceFreight', label: this.$t('成交单价')})
clearanceFields.forEach(item => {
if(row[item.field]){
clearance.push({
label: item.label,
value: row[item.field],
currency: row.clearanceFreightCurrency,
volume: row.clearanceFreightVolume,
remark: (row.specialPriceType || row.splitCustomPriceType || row.channelManualPricing) && item.field == 'oneClearanceFreight' ? this.$t('特价') : null
})
}
})
freight.push({
label: this.$t('价格更新时间'),
value: parseTime(row.updateTime)
})
clearance.push({
label: this.$t('价格更新时间'),
value: parseTime(row.updateTime)
})
this.feeDetail = {
freight,
clearance,
charging:
row.charging,
coupons: row.couponInfoVOList,
airClearanceSource: [,this.$t('商品'), this.$t('渠道'), this.$t('商品线路价格'),this.$t('线路渠道')][row.airClearanceSource], // 1 商品 2 渠道 3 商品线路价格 4 线路渠道
airClearanceInfo: JSON.parse(row.airClearanceInfo), //空运清关费来源数据详情,
sourceName: row.airClearanceSource == 1 ? this.$l(row, 'prodTitle') : this.order?.channelName
}
},
// 获取储位名称
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 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)
}
chargeData.weight = chargeData.weight.plus(item.chargeWeight || 0)
chargeData.volume = chargeData.volume.plus(item.chargeVolume || 0)
})
const summary = Array(19).fill(null)
summary[3] = this.$t("合计")
// 入仓
summary[4] = `${warehouseInData.num}${this.$t('')} ${warehouseInData.weight}KG ${warehouseInData.volume}${warehouseInData.quantity}${this.$t('')}`
// 货值
summary[7] = worth.toNumber()
// 收费数九
summary[10] = `${chargeData.weight}KG ${chargeData.volume}m³`
// 填单数据
summary[17] = `${fillData.num}${this.$t('')} ${fillData.weight}KG ${fillData.volume}${fillData.quantity}${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 prop="prodTitleZh" :label="$t('品名')">
<template slot-scope="{row}">
{{row.prodTitleZh}}/{{row.prodTitleEn}}
</template>
</el-table-column>
<!--<el-table-column prop="prodTitleEn" :label="$t('品名')" />-->
<el-table-column prop="brand" :label="$t('品牌')" width="90px">
<template slot-scope="{row}">
<template v-if="row.brandName">{{row.brandName}}</template>
<dict-tag v-else :type="DICT_TYPE.ECW_IS_BRAND" :value="row.brandType" />
</template>
</el-table-column>
<el-table-column prop="brand" :label="$t('特性')" width="90px">
<template slot-scope="{row}">
{{showAttrText(row.warehouseInInfoVO ? row.warehouseInProdAttrIds : row.prodAttrIds)}}
</template>
</el-table-column>
<el-table-column prop="sumNum" :label="$t('入仓信息')" width="90px">
<template slot-scope="{row}">
<!--<el-link type="primary" @click.native="showWarehouseLogs(row,1)">{{row.warehouseInInfoVO ? row.warehouseInInfoVO.cartonsNum : 0}}</el-link>
<div v-if="row.warehouseInInfoVO && row.warehouseInInfoVO.isMultiSpecification">({{$t('多规格')}})</div>-->
<div v-if="row.warehouseInInfoVO">
{{row.warehouseInInfoVO.cartonsNum}}{{$t('')}}
{{row.warehouseInInfoVO.weight}}Kg
{{row.warehouseInInfoVO.volume}}
{{row.warehouseInInfoVO.quantityAll}}{{$t('')}}
</div>
</template>
</el-table-column>
<el-table-column prop="warehouseType" :label="$t('类型')" width="120px"/>
<el-table-column prop="specificationType" :label="$t('包装')" width="120px"/>
<el-table-column prop="worth" :label="$t('货值')" width="120px"/>
<el-table-column prop="warehouseRecordRemark" :label="$t('入仓备注')" width="120px"/>
<el-table-column prop="warehouseInInfoVO.expressNo" :label="$t('快递单号')" />
<el-table-column prop="sumNum" :label="$t('收费数据')" width="90px">
<template slot-scope="{row}">
<div v-if="row.warehouseInInfoVO">
{{row.chargeWeight}}Kg
{{row.chargeVolume}}
</div>
</template>
</el-table-column>
<el-table-column prop="" :label="`${$t('费用类型')}/${$t('模式')}`">
<template slot-scope="{row}">
<dict-tag :type="DICT_TYPE.ECW_PAY_ADVANCE" :value="row.isPayAdvance" />
<div v-if="row.charging ==0">{{ $t('运费/清关费') }}</div>
<div v-if="row.charging ==1">{{ $t('全包价') }}</div>
</template>
</el-table-column>
<el-table-column prop="" :label="$t('成交单价')" width="220px">
<template slot-scope="{row}">
<template v-if="row.charging ==1">
<template v-if="!row.originalSeaFreight">{{ $t('未报价') }}</template>
<el-link type="primary" @click="showFeeDetail(row, 'clearance')" v-else>{{$t('全包价')}} {{row.oneSeaFreight}} {{currencyMap[row.seaFreightCurrency]}} / {{unitMap[row.seaFreightVolume]}}</el-link>
</template>
<template v-else-if="!row.originalSeaFreight && !row.originalClearanceFreight">{{ $t('未报价') }}</template>
<template v-else>
<el-link type="primary" @click="showFeeDetail(row, 'freight')">
{{$t('运费')}}{{row.oneSeaFreight}} {{currencyMap[row.seaFreightCurrency]}} / {{unitMap[row.seaFreightVolume]}}
</el-link>
<el-link type="primary" @click="showFeeDetail(row, 'clearance')">
{{$t('清关费')}}{{row.oneClearanceFreight}} {{currencyMap[row.clearanceFreightCurrency]}} / {{unitMap[row.clearanceFreightVolume]}}
</el-link >
</template>
</template>
</el-table-column>
<el-table-column prop="" :label="$t('材质')">
<template slot-scope="{row}">
<dict-tag :type="DICT_TYPE.ECW_PRODUCT_MATERIAL" :value="row.material" />
</template>
</el-table-column>
<el-table-column prop="" :label="$t('用途')">
<template slot-scope="{row}">
<div v-if="row.usageIds">
<div v-for="(item,index) in row.usageIds.split(',')">
<dict-tag :type="DICT_TYPE.OREER_ITEM_USAGE" :value="item" />
<span v-if="(index+1)!=row.usageIds.split(',').length">,</span>
</div>
</div>
</template>
</el-table-column>
<el-table-column prop="" :label="$t('储位')">
<template slot-scope="{row}">
<template v-if="row.warehouseInInfoVO">
{{getLocationName(row.warehouseInInfoVO.orderLocationMergeVOSet)}}
</template>
</template>
</el-table-column>
<el-table-column prop="" :label="$t('商品链接')">
<template slot-scope="{row}">
<template v-if="row.link">
<a target="_blank" :url="row.link">{{row.link}}</a>
</template>
</template>
</el-table-column>
<el-table-column prop="sumNum" :label="$t('填单信息')" width="90px">
<template slot-scope="{row}">
{{row.num}}{{$t('')}}
{{row.weight}}Kg
{{row.volume}}
{{row.quantity}}{{$t('')}}
</template>
</el-table-column>
<el-table-column prop="expressNo" :label="$t('填单快递单号')" />
</el-table>
<el-dialog :title="$t('费用详情')" :visible="!!showFeeDetailDialog" :before-close="closeFeeDetail">
<el-row v-if="feeDetail">
<el-col :span="12">
<div>{{feeDetail.charging ? $t('全包价') : $t('运费')}}</div>
<div v-for="item in feeDetail.freight">
{{item.label}}: {{item.value}}
<template v-if="item.currency">
{{currencyMap[item.currency]}} / {{unitMap[item.volume]}} <span v-if="item.remark">{{item.remark}}</span>
</template>
</div>
</el-col>
<el-col :span="12" v-if="feeDetail.charging != 1">
<div>
{{$t('清关费')}}
<template v-if="transportId == 3 || transportId == 4">
{{$t('来自{source}', {source: feeDetail.airClearanceSource + feeDetail.sourceName})}}
</template>
</div>
<div v-for="item in feeDetail.clearance">
{{item.label}}: {{item.value}}
<template v-if="item.currency">
{{currencyMap[item.currency]}} / {{unitMap[item.volume]}} <span v-if="item.remark">{{item.remark}}</span>
</template>
</div>
</el-col>
</el-row>
<div v-if="feeDetail && feeDetail.coupons && feeDetail.coupons.length" class="page-title">{{ $t('优惠详情') }}</div>
<el-table v-if="feeDetail && feeDetail.coupons && feeDetail.coupons.length" :data="feeDetail.coupons">
<el-table-column label="优惠ID" prop="couponId"></el-table-column>
<el-table-column label="优惠名称">
<template slot-scope="{row}">
{{ $l(row, 'title') }}
</template>
</el-table-column>
<el-table-column label="类型">
<template slot-scope="{row}">
<dict-tag :type="DICT_TYPE.ECW_COUPON_TYPE" :value="row.type" ></dict-tag>
</template>
</el-table-column>
<el-table-column label="运费优惠">
<template slot-scope="{row}">
{{ row.freightReduceAmount}}
{{currencyMap[row.freightReduceCurrencyId]}}
</template>
</el-table-column>
<el-table-column label="清关费优惠">
<template slot-scope="{row}">
{{ row.clearanceReduceAmount}}
{{ currencyMap[row.clearanceReduceCurrencyId] }}
</template>
</el-table-column>
</el-table>
</el-dialog>
</div>
</template>
<script>
import Decimal from 'decimal.js'
import { parseTime } from '@/utils/ruoyi'
export default {
name: 'CheckDetailProd',
props: {
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");
}
}
};
},
// 显示特性
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:{
// 获取储位名称
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 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)
}
chargeData.weight = chargeData.weight.plus(item.chargeWeight || 0)
chargeData.volume = chargeData.volume.plus(item.chargeVolume || 0)
})
const summary = Array(19).fill(null)
summary[3] = this.$t("合计")
// 入仓
summary[4] = `${warehouseInData.num}${this.$t('')} ${warehouseInData.weight}KG ${warehouseInData.volume}${warehouseInData.quantity}${this.$t('')}`
// 货值
summary[7] = worth.toNumber()
// 收费数九
summary[10] = `${chargeData.weight}KG ${chargeData.volume}m³`
// 填单数据
summary[17] = `${fillData.num}${this.$t('')} ${fillData.weight}KG ${fillData.volume}${fillData.quantity}${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 prop="prodTitleZh" :label="$t('品名')">
<template slot-scope="{row}">
<span>{{ getProdTypeName(row.prodType) }}</span>
<span>{{row.prodTitleZh}}/{{row.prodTitleEn}}</span>
</template>
</el-table-column>
<!--<el-table-column prop="prodTitleEn" :label="$t('品名')" />-->
<el-table-column prop="brand" :label="$t('品牌')" width="90px">
<template slot-scope="{row}">
<template v-if="row.brandName">{{row.brandName}}</template>
<dict-tag v-else :type="DICT_TYPE.ECW_IS_BRAND" :value="row.brandType" />
</template>
</el-table-column>
<el-table-column prop="brand" :label="$t('特性')" width="90px">
<template slot-scope="{row}">
{{showAttrText(row.warehouseInInfoVO ? row.warehouseInProdAttrIds : row.prodAttrIds)}}
</template>
</el-table-column>
<el-table-column prop="sumNum" :label="$t('入仓信息')" width="90px">
<template slot-scope="{row}">
<!--<el-link type="primary" @click.native="showWarehouseLogs(row,1)">{{row.warehouseInInfoVO ? row.warehouseInInfoVO.cartonsNum : 0}}</el-link>
<div v-if="row.warehouseInInfoVO && row.warehouseInInfoVO.isMultiSpecification">({{$t('多规格')}})</div>-->
<div v-if="row.warehouseInInfoVO">
{{row.warehouseInInfoVO.cartonsNum}}{{$t('')}}
{{row.warehouseInInfoVO.weight}}Kg
{{row.warehouseInInfoVO.volume}}
{{row.warehouseInInfoVO.quantityAll}}{{$t('')}}
</div>
</template>
</el-table-column>
<el-table-column prop="warehouseType" :label="$t('类型')" width="120px"/>
<el-table-column prop="specificationType" :label="$t('包装')" width="120px"/>
<el-table-column prop="worth" :label="$t('货值')" width="120px"/>
<el-table-column prop="warehouseRecordRemark" :label="$t('入仓备注')" width="120px"/>
<el-table-column prop="warehouseInInfoVO.expressNo" :label="$t('快递单号')" />
<el-table-column prop="sumNum" :label="$t('收费数据')" width="90px">
<template slot-scope="{row}">
<div v-if="row.warehouseInInfoVO">
{{row.chargeWeight}}Kg
{{row.chargeVolume}}
</div>
</template>
</el-table-column>
<el-table-column prop="" :label="`${$t('费用类型')}/${$t('模式')}`">
<template slot-scope="{row}">
<dict-tag :type="DICT_TYPE.ECW_PAY_ADVANCE" :value="row.isPayAdvance" />
<div v-if="row.charging ==0">{{ $t('运费/清关费') }}</div>
<div v-if="row.charging ==1">{{ $t('全包价') }}</div>
</template>
</el-table-column>
<el-table-column prop="" :label="$t('成交单价')" width="220px">
<template slot-scope="{row}">
<template v-if="row.charging ==1">
<template v-if="!row.originalSeaFreight">{{ $t('未报价') }}</template>
<el-link type="primary" @click="showFeeDetail(row, 'clearance')" v-else>{{$t('全包价')}} {{row.oneSeaFreight}} {{currencyMap[row.seaFreightCurrency]}} / {{unitMap[row.seaFreightVolume]}}</el-link>
</template>
<template v-else-if="!row.originalSeaFreight && !row.originalClearanceFreight">{{ $t('未报价') }}</template>
<template v-else>
<el-link type="primary" @click="showFeeDetail(row, 'freight')">
{{$t('运费')}}{{row.oneSeaFreight}} {{currencyMap[row.seaFreightCurrency]}} / {{unitMap[row.seaFreightVolume]}}
</el-link>
<el-link type="primary" @click="showFeeDetail(row, 'clearance')">
{{$t('清关费')}}{{row.oneClearanceFreight}} {{currencyMap[row.clearanceFreightCurrency]}} / {{unitMap[row.clearanceFreightVolume]}}
</el-link >
</template>
</template>
</el-table-column>
<el-table-column prop="" :label="$t('材质')">
<template slot-scope="{row}">
<dict-tag :type="DICT_TYPE.ECW_PRODUCT_MATERIAL" :value="row.material" />
</template>
</el-table-column>
<el-table-column prop="" :label="$t('用途')">
<template slot-scope="{row}">
<div v-if="row.usageIds">
<div v-for="(item,index) in row.usageIds.split(',')">
<dict-tag :type="DICT_TYPE.OREER_ITEM_USAGE" :value="item" />
<span v-if="(index+1)!=row.usageIds.split(',').length">,</span>
</div>
</div>
</template>
</el-table-column>
<el-table-column prop="" :label="$t('储位')">
<template slot-scope="{row}">
<template v-if="row.warehouseInInfoVO">
{{getLocationName(row.warehouseInInfoVO.orderLocationMergeVOSet)}}
</template>
</template>
</el-table-column>
<el-table-column prop="" :label="$t('商品链接')">
<template slot-scope="{row}">
<template v-if="row.link">
<a target="_blank" :url="row.link">{{row.link}}</a>
</template>
</template>
</el-table-column>
<el-table-column prop="sumNum" :label="$t('填单信息')" width="90px">
<template slot-scope="{row}">
{{row.num}}{{$t('')}}
{{row.weight}}Kg
{{row.volume}}
{{row.quantity}}{{$t('')}}
</template>
</el-table-column>
<el-table-column prop="expressNo" :label="$t('填单快递单号')" />
</el-table>
<el-dialog :title="$t('费用详情')" :visible="!!showFeeDetailDialog" :before-close="closeFeeDetail">
<el-row v-if="feeDetail">
<el-col :span="12">
<div>{{feeDetail.charging ? $t('全包价') : $t('运费')}}</div>
<div v-for="item in feeDetail.freight">
{{item.label}}: {{item.value}}
<template v-if="item.currency">
{{currencyMap[item.currency]}} / {{unitMap[item.volume]}} <span v-if="item.remark">{{item.remark}}</span>
</template>
</div>
</el-col>
<el-col :span="12" v-if="feeDetail.charging != 1">
<div>
{{$t('清关费')}}
<template v-if="transportId == 3 || transportId == 4">
{{$t('来自{source}', {source: feeDetail.airClearanceSource + feeDetail.sourceName})}}
</template>
</div>
<div v-for="item in feeDetail.clearance">
{{item.label}}: {{item.value}}
<template v-if="item.currency">
{{currencyMap[item.currency]}} / {{unitMap[item.volume]}} <span v-if="item.remark">{{item.remark}}</span>
</template>
</div>
</el-col>
</el-row>
<div v-if="feeDetail && feeDetail.coupons && feeDetail.coupons.length" class="page-title">{{ $t('优惠详情') }}</div>
<el-table v-if="feeDetail && feeDetail.coupons && feeDetail.coupons.length" :data="feeDetail.coupons">
<el-table-column label="优惠ID" prop="couponId"></el-table-column>
<el-table-column label="优惠名称">
<template slot-scope="{row}">
{{ $l(row, 'title') }}
</template>
</el-table-column>
<el-table-column label="类型">
<template slot-scope="{row}">
<dict-tag :type="DICT_TYPE.ECW_COUPON_TYPE" :value="row.type" ></dict-tag>
</template>
</el-table-column>
<el-table-column label="运费优惠">
<template slot-scope="{row}">
{{ row.freightReduceAmount}}
{{currencyMap[row.freightReduceCurrencyId]}}
</template>
</el-table-column>
<el-table-column label="清关费优惠">
<template slot-scope="{row}">
{{ row.clearanceReduceAmount}}
{{ currencyMap[row.clearanceReduceCurrencyId] }}
</template>
</el-table-column>
</el-table>
</el-dialog>
</div>
</template>
<script>
import Decimal from 'decimal.js'
import { parseTime } from '@/utils/ruoyi'
export default {
name: 'DetailProd',
props: {
......@@ -11,6 +12,10 @@ export default {
type: Array,
required: true
},
prodTypeList: {
type: Array,
required: true
},
currencyMap: {
type: Object,
required: true
......@@ -19,8 +24,28 @@ export default {
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");
}
}
};
},
// 显示特性
showAttrText(){
return ids => {
......@@ -35,6 +60,119 @@ export default {
},
},
methods:{
closeFeeDetail(){
this.showFeeDetailDialog = null
},
showFeeDetail(row, type){
console.log("showFeeDetail", row, type)
this.showFeeDetailDialog = true
const freight = [], clearance = []
let freightFields = []
let clearanceFields = []
const brandType = row.warehouseInInfoVO ? row.feeType : row.brandType
// 不是特价则显示其他字段
freightFields = [
// {field: 'oneSeaFreight', label: this.$t('成交单价')},
{field: 'originalSeaFreight', label: this.$t('默认单价(无牌无液无电)')},
// {field: 'brandFreightPrice', label: this.$t('品牌加价')},
{field: 'liquidFreightPrice', label: this.$t('液体加价')},
{field: 'electrifiedFreightPrice', label: this.$t('带电加价')},
{field: 'discountFreightPrice', label: this.$t('优惠活动减免')},
{field: 'plainCommission', label: this.$t('明佣')},
{field: 'hiddenCommission', label: this.$t('暗佣')}
]
// 批量加价
if(row.markupSeaFreight){
freightFields.push({field: 'markupSeaFreight', label: this.$t('批量加价')})
}
// 品牌加价
if(row['brandFreightPrice'] && row['brandFreightPrice'] > 0){
freightFields.push({field: 'brandFreightPrice', label: brandType == 1 ? this.$t('有品牌加价') : this.$t('中性品牌加价')})
}
// 有减免金额才显示优惠后单价
if(row['discountFreightPrice'] && row['discountFreightPrice'] > 0){
freightFields.push({field: 'afterDiscountSeaFreight', label: this.$t('优惠后单价')})
}
// 包装加价
if(row['packagingFreightPrice'] && row['packagingFreightPrice'] > 0){
freightFields.push({field: 'packagingFreightPrice', label: this.$t('包装加价')})
}
freightFields.push({field: 'oneSeaFreight', label: this.$t('成交单价')})
console.log({freightFields})
freightFields.forEach(item => {
if(row[item.field]){
freight.push({
label: item.label,
value: row[item.field],
currency: row.seaFreightCurrency,
volume: row.seaFreightVolume,
// 特价通过四个字段标识,任一为true则为特价
remark: item.field == 'oneSeaFreight' && (row.specialPriceType || row.splitCustomPriceType || row.channelManualPricing) ? this.$t('特价') : null
})
}
})
clearanceFields = [
{field: 'originalClearanceFreight', label: this.$t('默认单价(无牌无液无电)')},
// {field: 'brandClearanceFeePrice', label: this.$t('品牌加价')},
{field: 'liquidClearanceFeePrice', label: this.$t('液体加价')},
{field: 'electrifiedClearanceFeePrice', label: this.$t('带电加价')},
{field: 'discountClearanceFeePrice', label: this.$t('优惠活动减免')}
]
// 批量加价
if(row.markupClearanceFreight){
clearanceFields.push({field: 'markupClearanceFreight', label: this.$t('批量加价')})
}
// 品牌加价
if(row['brandClearanceFeePrice'] && row['brandClearanceFeePrice'] > 0){
clearanceFields.push({field: 'brandClearanceFeePrice', label: brandType == 1 ? this.$t('有品牌加价') : this.$t('中性品牌加价')})
}
if(row['discountClearanceFeePrice'] && row['discountClearanceFeePrice'] > 0){
clearanceFields.push({field: 'afterDiscountClearanceFreight', label: this.$t('优惠后单价')})
}
// 包装加价
if(row['packagingClearanceFeePrice'] && row['packagingClearanceFeePrice'] > 0){
clearanceFields.push({field: 'packagingClearanceFeePrice', label: this.$t('包装加价')})
}
clearanceFields.push({field: 'oneClearanceFreight', label: this.$t('成交单价')})
clearanceFields.forEach(item => {
if(row[item.field]){
clearance.push({
label: item.label,
value: row[item.field],
currency: row.clearanceFreightCurrency,
volume: row.clearanceFreightVolume,
remark: (row.specialPriceType || row.splitCustomPriceType || row.channelManualPricing) && item.field == 'oneClearanceFreight' ? this.$t('特价') : null
})
}
})
freight.push({
label: this.$t('价格更新时间'),
value: parseTime(row.updateTime)
})
clearance.push({
label: this.$t('价格更新时间'),
value: parseTime(row.updateTime)
})
this.feeDetail = {
freight,
clearance,
charging:
row.charging,
coupons: row.couponInfoVOList,
airClearanceSource: [,this.$t('商品'), this.$t('渠道'), this.$t('商品线路价格'),this.$t('线路渠道')][row.airClearanceSource], // 1 商品 2 渠道 3 商品线路价格 4 线路渠道
airClearanceInfo: JSON.parse(row.airClearanceInfo), //空运清关费来源数据详情,
sourceName: row.airClearanceSource == 1 ? this.$l(row, 'prodTitle') : this.order?.channelName
}
},
// 获取储位名称
getLocationName(locationArr){
if(!locationArr || !locationArr.length) return ''
......@@ -100,6 +238,7 @@ export default {
</script>
<template>
<div>
<el-table
:data="list"
border
......@@ -111,7 +250,8 @@ export default {
</el-table-column>
<el-table-column prop="prodTitleZh" :label="$t('品名')">
<template slot-scope="{row}">
{{row.prodTitleZh}}/{{row.prodTitleEn}}
<span>{{ getProdTypeName(row.prodType) }}</span>
<span>{{row.prodTitleZh}}/{{row.prodTitleEn}}</span>
</template>
</el-table-column>
<!--<el-table-column prop="prodTitleEn" :label="$t('品名')" />-->
......@@ -215,5 +355,60 @@ export default {
</el-table-column>
<el-table-column prop="expressNo" :label="$t('填单快递单号')" />
</el-table>
<el-dialog :title="$t('费用详情')" :visible="!!showFeeDetailDialog" :before-close="closeFeeDetail">
<el-row v-if="feeDetail">
<el-col :span="12">
<div>{{feeDetail.charging ? $t('全包价') : $t('运费')}}</div>
<div v-for="item in feeDetail.freight">
{{item.label}}: {{item.value}}
<template v-if="item.currency">
{{currencyMap[item.currency]}} / {{unitMap[item.volume]}} <span v-if="item.remark">{{item.remark}}</span>
</template>
</div>
</el-col>
<el-col :span="12" v-if="feeDetail.charging != 1">
<div>
{{$t('清关费')}}
<template v-if="transportId == 3 || transportId == 4">
{{$t('来自{source}', {source: feeDetail.airClearanceSource + feeDetail.sourceName})}}
</template>
</div>
<div v-for="item in feeDetail.clearance">
{{item.label}}: {{item.value}}
<template v-if="item.currency">
{{currencyMap[item.currency]}} / {{unitMap[item.volume]}} <span v-if="item.remark">{{item.remark}}</span>
</template>
</div>
</el-col>
</el-row>
<div v-if="feeDetail && feeDetail.coupons && feeDetail.coupons.length" class="page-title">{{ $t('优惠详情') }}</div>
<el-table v-if="feeDetail && feeDetail.coupons && feeDetail.coupons.length" :data="feeDetail.coupons">
<el-table-column label="优惠ID" prop="couponId"></el-table-column>
<el-table-column label="优惠名称">
<template slot-scope="{row}">
{{ $l(row, 'title') }}
</template>
</el-table-column>
<el-table-column label="类型">
<template slot-scope="{row}">
<dict-tag :type="DICT_TYPE.ECW_COUPON_TYPE" :value="row.type" ></dict-tag>
</template>
</el-table-column>
<el-table-column label="运费优惠">
<template slot-scope="{row}">
{{ row.freightReduceAmount}}
{{currencyMap[row.freightReduceCurrencyId]}}
</template>
</el-table-column>
<el-table-column label="清关费优惠">
<template slot-scope="{row}">
{{ row.clearanceReduceAmount}}
{{ currencyMap[row.clearanceReduceCurrencyId] }}
</template>
</el-table-column>
</el-table>
</el-dialog>
</div>
</template>
......@@ -144,7 +144,10 @@
{{order.packageRemarks}}
</el-descriptions-item>
<el-descriptions-item :label="$t('到仓数据')">
// TODO
{{order.checkNum}}{{$t('箱')}}
{{order.checkWeight}}Kg
{{order.checkVolume}}m³
{{order.checkQuantity}}{{$t('个')}}
</el-descriptions-item>
<el-descriptions-item :label="$t('提货数据')">
{{order.pickNum}} {{$t('箱')}} {{order.pickRatio}}%
......@@ -219,16 +222,20 @@
<el-tab-pane :label="$t('货物详情')" name="first">
<detail-prod :list="order.orderItemVOList"
:attr-list="attrList"
:prod-type-list="prodTypeList"
:currency-map="currencyMap"
:unit-map="unitMap"
:transport-id="order.transportId"
></detail-prod>
</el-tab-pane>
<!--退参品名 退仓/已混箱品名 lanbm 2024-04-16 按客户的要求修改-->
<el-tab-pane :label="$t('退仓/已混箱品名')" name="six">
<detail-prod :list="orderItemDeletedData"
:attr-list="attrList"
:prod-type-list="prodTypeList"
:currency-map="currencyMap"
:unit-map="unitMap"
:transport-id="order.transportId"
></detail-prod>
</el-tab-pane>
<!--lanbm 2024-06-11 处理订单到仓时间取值问题-->
......@@ -318,6 +325,15 @@
</el-table-column>
</el-table>
</el-tab-pane>
<el-tab-pane :label="$t('到仓详情')" name="seven">
<check-detail-prod :list="orderCheckInfoData"
:attr-list="attrList"
:prod-type-list="prodTypeList"
:currency-map="currencyMap"
:unit-map="unitMap"
:transport-id="order.transportId"
></check-detail-prod>
</el-tab-pane>
<!-- 这个地方v-hasPermi不生效,所以换checkPermi函数检查 -->
<el-tab-pane :label="$t('操作日志')" name="five" v-if="checkPermi(['ecw:order:logs'])">
<el-table :data="logs" v-loading="logsLoading">
......@@ -374,61 +390,6 @@
</el-table>
</el-dialog>
<el-dialog :title="$t('费用详情')" :visible="!!showFeeDetailDialog" :before-close="closeFeeDetail">
<el-row v-if="feeDetail">
<el-col :span="12">
<div>{{feeDetail.charging ? $t('全包价') : $t('运费')}}</div>
<div v-for="item in feeDetail.freight">
{{item.label}}: {{item.value}}
<template v-if="item.currency">
{{currencyMap[item.currency]}} / {{unitMap[item.volume]}} <span v-if="item.remark">{{item.remark}}</span>
</template>
</div>
</el-col>
<el-col :span="12" v-if="feeDetail.charging != 1">
<div>
{{$t('清关费')}}
<template v-if="order.transportId == 3 || order.transportId == 4">
{{$t('来自{source}', {source: feeDetail.airClearanceSource + feeDetail.sourceName})}}
</template>
</div>
<div v-for="item in feeDetail.clearance">
{{item.label}}: {{item.value}}
<template v-if="item.currency">
{{currencyMap[item.currency]}} / {{unitMap[item.volume]}} <span v-if="item.remark">{{item.remark}}</span>
</template>
</div>
</el-col>
</el-row>
<div v-if="feeDetail && feeDetail.coupons && feeDetail.coupons.length" class="page-title">{{ $t('优惠详情') }}</div>
<el-table v-if="feeDetail && feeDetail.coupons && feeDetail.coupons.length" :data="feeDetail.coupons">
<el-table-column label="优惠ID" prop="couponId"></el-table-column>
<el-table-column label="优惠名称">
<template slot-scope="{row}">
{{ $l(row, 'title') }}
</template>
</el-table-column>
<el-table-column label="类型">
<template slot-scope="{row}">
<dict-tag :type="DICT_TYPE.ECW_COUPON_TYPE" :value="row.type" ></dict-tag>
</template>
</el-table-column>
<el-table-column label="运费优惠">
<template slot-scope="{row}">
{{ row.freightReduceAmount}}
{{currencyMap[row.freightReduceCurrencyId]}}
</template>
</el-table-column>
<el-table-column label="清关费优惠">
<template slot-scope="{row}">
{{ row.clearanceReduceAmount}}
{{ currencyMap[row.clearanceReduceCurrencyId] }}
</template>
</el-table-column>
</el-table>
</el-dialog>
<!--日志详情-->
<operate-log-detail v-if="showLogDetailId" :log-id="showLogDetailId" @close="showLogDetailId=null"></operate-log-detail>
<!--打包历史-->
......@@ -449,7 +410,7 @@
</template>
<script>
import {getOrder, operateLogPage,getOrderItemDeleted} from '@/api/ecw/order'
import {getOrder, operateLogPage, getOrderItemDeleted, getOrderCheckInfo} from '@/api/ecw/order'
import { getDictDatas, DICT_TYPE, getDictData } from '@/utils/dict';
import PrintWarehouseReceipt from './components/PrintWarehouseReceipt'
import PrintLadingBill from './components/PrintLadingBill'
......@@ -473,11 +434,14 @@ import {getSupplier} from "@/api/ecw/supplier";
import {getProductAttrList} from "@/api/ecw/productAttr";
import Decimal from 'decimal.js'
import DetailProd from '@/views/ecw/order/components/DetailProd.vue'
import CheckDetailProd from '@/views/ecw/order/components/CheckDetailProd.vue'
import {getProductTypeList} from "@/api/ecw/productType";
export default {
name: "detail",
components: {
DetailProd,
CheckDetailProd,
ImageDisplay,
OperateLogDetail,
PrintWarehouseReceipt, PrintLadingBill,
......@@ -518,8 +482,8 @@ export default {
region: '',
orderWarehouseIn: null, // 入仓详情
showWarehouseInItemId: null, // 当前显示的入仓
showFeeDetailDialog: null, // 是否显示费用详情弹层
feeDetail: null, // 费用详情
/*showFeeDetailDialog: null, // 是否显示费用详情弹层
feeDetail: null, // 费用详情*/
logsLoading: false, // 日志加载中
logs: [], // 操作日志
activeNames: [],//显示隐藏订单基本信息
......@@ -533,6 +497,8 @@ export default {
packAfterData:null,//显示打包历史详情
attrList: [],
orderItemDeletedData:[],//退仓品名
orderCheckInfoData:[],//到仓详情
prodTypeList:[],//商品类型列表
type:1
}
},
......@@ -613,6 +579,8 @@ export default {
this.getOrder();
this.getOfferNumber()
this.getOrderItemDeleted()
this.getOrderCheckInfo()
this.getProdTypeList();
}
getCurrencyList().then(res => this.currencyList = res.data)
......@@ -624,6 +592,9 @@ export default {
},
methods: {
checkPermi, // 检查权限,
handleTest(e){
console.log("handleTest", e)
},
//订单信息显示更多
handleChange(val){
this.showText = val.length>0? this.$t('隐藏') : this.$t('显示更多')
......@@ -638,119 +609,7 @@ export default {
this.showMore = !this.showMore;
this.consigneeText = this.showMore? this.$t('隐藏') : this.$t('更多')
},
// 显示费用详情
showFeeDetail(row, type){
this.showFeeDetailDialog = true
const freight = [], clearance = []
let freightFields = []
let clearanceFields = []
const brandType = row.warehouseInInfoVO ? row.feeType : row.brandType
// 不是特价则显示其他字段
freightFields = [
// {field: 'oneSeaFreight', label: this.$t('成交单价')},
{field: 'originalSeaFreight', label: this.$t('默认单价(无牌无液无电)')},
// {field: 'brandFreightPrice', label: this.$t('品牌加价')},
{field: 'liquidFreightPrice', label: this.$t('液体加价')},
{field: 'electrifiedFreightPrice', label: this.$t('带电加价')},
{field: 'discountFreightPrice', label: this.$t('优惠活动减免')},
{field: 'plainCommission', label: this.$t('明佣')},
{field: 'hiddenCommission', label: this.$t('暗佣')}
]
// 批量加价
if(row.markupSeaFreight){
freightFields.push({field: 'markupSeaFreight', label: this.$t('批量加价')})
}
// 品牌加价
if(row['brandFreightPrice'] && row['brandFreightPrice'] > 0){
freightFields.push({field: 'brandFreightPrice', label: brandType == 1 ? this.$t('有品牌加价') : this.$t('中性品牌加价')})
}
// 有减免金额才显示优惠后单价
if(row['discountFreightPrice'] && row['discountFreightPrice'] > 0){
freightFields.push({field: 'afterDiscountSeaFreight', label: this.$t('优惠后单价')})
}
// 包装加价
if(row['packagingFreightPrice'] && row['packagingFreightPrice'] > 0){
freightFields.push({field: 'packagingFreightPrice', label: this.$t('包装加价')})
}
freightFields.push({field: 'oneSeaFreight', label: this.$t('成交单价')})
console.log({freightFields})
freightFields.forEach(item => {
if(row[item.field]){
freight.push({
label: item.label,
value: row[item.field],
currency: row.seaFreightCurrency,
volume: row.seaFreightVolume,
// 特价通过四个字段标识,任一为true则为特价
remark: item.field == 'oneSeaFreight' && (row.specialPriceType || row.splitCustomPriceType || row.channelManualPricing) ? this.$t('特价') : null
})
}
})
clearanceFields = [
{field: 'originalClearanceFreight', label: this.$t('默认单价(无牌无液无电)')},
// {field: 'brandClearanceFeePrice', label: this.$t('品牌加价')},
{field: 'liquidClearanceFeePrice', label: this.$t('液体加价')},
{field: 'electrifiedClearanceFeePrice', label: this.$t('带电加价')},
{field: 'discountClearanceFeePrice', label: this.$t('优惠活动减免')}
]
// 批量加价
if(row.markupClearanceFreight){
clearanceFields.push({field: 'markupClearanceFreight', label: this.$t('批量加价')})
}
// 品牌加价
if(row['brandClearanceFeePrice'] && row['brandClearanceFeePrice'] > 0){
clearanceFields.push({field: 'brandClearanceFeePrice', label: brandType == 1 ? this.$t('有品牌加价') : this.$t('中性品牌加价')})
}
if(row['discountClearanceFeePrice'] && row['discountClearanceFeePrice'] > 0){
clearanceFields.push({field: 'afterDiscountClearanceFreight', label: this.$t('优惠后单价')})
}
// 包装加价
if(row['packagingClearanceFeePrice'] && row['packagingClearanceFeePrice'] > 0){
clearanceFields.push({field: 'packagingClearanceFeePrice', label: this.$t('包装加价')})
}
clearanceFields.push({field: 'oneClearanceFreight', label: this.$t('成交单价')})
clearanceFields.forEach(item => {
if(row[item.field]){
clearance.push({
label: item.label,
value: row[item.field],
currency: row.clearanceFreightCurrency,
volume: row.clearanceFreightVolume,
remark: (row.specialPriceType || row.splitCustomPriceType || row.channelManualPricing) && item.field == 'oneClearanceFreight' ? this.$t('特价') : null
})
}
})
freight.push({
label: this.$t('价格更新时间'),
value: parseTime(row.updateTime)
})
clearance.push({
label: this.$t('价格更新时间'),
value: parseTime(row.updateTime)
})
this.feeDetail = {
freight,
clearance,
charging:
row.charging,
coupons: row.couponInfoVOList,
airClearanceSource: [,this.$t('商品'), this.$t('渠道'), this.$t('商品线路价格'),this.$t('线路渠道')][row.airClearanceSource], // 1 商品 2 渠道 3 商品线路价格 4 线路渠道
airClearanceInfo: JSON.parse(row.airClearanceInfo), //空运清关费来源数据详情,
sourceName: row.airClearanceSource == 1 ? this.$l(row, 'prodTitle') : this.order?.channelName
}
},
closeFeeDetail(){
this.showFeeDetailDialog = null
},
/** 查询列表 */
getOrder() {
let that = this
......@@ -769,6 +628,19 @@ export default {
that.orderItemDeletedData = response.data;
});
},
getOrderCheckInfo(){
let that = this
// 执行查询
getOrderCheckInfo(that.orderId).then(response => {
that.orderCheckInfoData = response.data;
});
},
/** 获取产品类型列表 */
getProdTypeList() {
getProductTypeList().then((response) => {
this.prodTypeList = response.data;
});
},
/* loadBrands(){
let brandIds = []
this.form.orderItemVOList.forEach(item => {
......
......@@ -707,7 +707,7 @@ import Template from '@/views/cms/template/index.vue'
let makeDefaultFormData = () => {
return {
destCountryId: null,
lienId: null,
lineId: null,
objectiveId: null,
departureId: null,
status:0,
......
......@@ -289,7 +289,9 @@
<el-table-column :label="$t('发货人客服')" align="center" prop="consignorFollowCustomerService" />
<el-table-column :label="$t('收货人客服')" align="center" prop="consigneeFollowCustomerService" />
<el-table-column :label="$t('到仓箱数/方数重量')" align="center" prop="status">
<template slot-scope="scope"> 暂无数据 </template>
<template slot-scope="{ row }">
{{ row.checkNum }}{{ $t("") }} / {{ row.checkVolume }}m³ /{{ row.checkWeight }}Kg
</template>
</el-table-column>
<el-table-column :label="$t('提货率')" align="center" prop="pickRatio" />
<el-table-column :label="$t('动态')" align="center" prop="statusMsg" />
......@@ -1000,6 +1002,7 @@ export default {
if (type.indexOf("2") > -1) {
arr.push(this.$t("海外仓"))
}
return arr.join(",")
}
}
},
......
......@@ -29,13 +29,31 @@
/>
</el-form-item>
<el-form-item :label="$t('商品名称')" prop="titleZh">
<!-- <el-form-item :label="$t('商品名称')" prop="titleZh">
<el-input
v-model="queryParams.titleZh"
:placeholder="$t('请输入商品名称')"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item> -->
<el-form-item :label="$t('商品名称')" prop="titleZh">
<el-input
v-model.trim="titleZhParam.value"
:placeholder="$t('请输入商品名称')"
clearable
@keyup.enter.native="handleQuery"
>
<template slot="prepend">
<dict-selector
:type="DICT_TYPE.PROD_QUERY_TITLE_ZH_FIELD"
defaultable
v-model="titleZhParam.key"
class="w-50"
/>
</template>
</el-input>
</el-form-item>
<el-form-item :label="$t('商品类型')" prop="attrId">
......@@ -72,18 +90,71 @@
</el-select>
</el-form-item>
<!-- <el-form-item :label="$t('审核状态')" prop="auditStatus">
<el-form-item :label="$t('商品材质')" prop="materialTypes">
<dict-selector
multiple
clearable
v-model="queryParams.materialTypes"
:type="DICT_TYPE.ECW_PRODUCT_MATERIAL"
></dict-selector>
</el-form-item>
<el-form-item :label="$t('审核状态')" prop="auditStatus">
<el-select v-model="queryParams.auditStatus" :placeholder="$t('选择审核状态')" clearable>
<el-option v-for="auditStatusItem in auditStatusDictDatas" :key="auditStatusItem.id" :label="auditStatusItem.label" :value="auditStatusItem.value" />
</el-select>
</el-form-item>
<el-form-item :label="$t('包装要求')" prop="packaging">
<dict-selector
clearable
v-model="queryParams.packaging"
:type="DICT_TYPE.ECW_PACKAGING_TYPE"
></dict-selector>
</el-form-item>
<!--
<el-form-item :label="$t('上架状态')" prop="status">
<el-select v-model="queryParams.status" :placeholder="$t('选择上架状态')" clearable>
<el-option v-for="statusItem in statusDictDatas" :key="statusItem.id" :label="statusItem.value == CommonStatusEnum.ENABLE ? '已上架' : '已下架'" :value="statusItem.value" />
</el-select>
</el-form-item> -->
<el-form-item :label="$t('创建时间')">
<el-date-picker
v-model="dateRangeCreateTime"
type="datetimerange"
:start-placeholder="$t('开始日期')"
value-format="yyyy-MM-dd HH:mm:ss"
:end-placeholder="$t('结束日期')"
>
</el-date-picker>
</el-form-item>
<!-- <el-form-item :label="$t('创建时间')" v-show="showSearch">
<el-date-picker
type="datetimerange"
clearable
v-model="dateRangeCreateTime"
style="width: 240px"
value-format="yyyy-MM-dd HH:mm:ss"
range-separator="-"
:start-placeholder="$t('开始日期')"
:end-placeholder="$t('结束日期')"
/>
</el-form-item> -->
<el-form-item :label="$t('创建人')" prop="creator">
<el-input
v-model.trim="queryParams.creator"
:placeholder="$t('请输入创建人')"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" @click="handleQuery">{{
$t("搜索")
......@@ -159,12 +230,25 @@
/>
<el-table-column :label="$t('中文标题')" align="center" prop="titleZh" />
<el-table-column :label="$t('英文标题')" align="center" prop="titleEn" />
<el-table-column :label="$t('商品性')" align="center" prop="attrId">
<el-table-column :label="$t('商品性')" align="center" prop="attrId">
<template slot-scope="scope">
<span>{{ getAttrName(scope.row.attrId) }}</span>
</template>
</el-table-column>
<!--商品特性-->
<el-table-column :label="$t('商品材质')" align="center">
<template slot-scope="scope">
<dict-tag :type="DICT_TYPE.ECW_PRODUCT_MATERIAL" :value="scope.row.materialType" />
</template>
</el-table-column>
<el-table-column :label="$t('包装要求')" align="center">
<template slot-scope="scope">
<dict-tag :type="DICT_TYPE.ECW_PACKAGING_TYPE" :value="scope.row.packaging" />
</template>
</el-table-column>
<!---->
<el-table-column :label="$t('商品图片')" align="center" prop="attrId">
<template slot-scope="scope">
<el-image
......@@ -178,7 +262,7 @@
<el-table-column
prop="auditStatus"
align="center"
:label="$t('是否审核')"
:label="$t('审核状态')"
width="120"
>
<template slot-scope="scope">
......@@ -197,12 +281,12 @@
</el-table-column>
<el-table-column
:label="$t('添加人')"
:label="$t('创建人')"
align="center"
prop="creatorName"
/>
<el-table-column :label="$t('添加时间')" align="center">
<el-table-column :label="$t('创建时间')" align="center">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.createTime) }}</span>
</template>
......@@ -342,7 +426,7 @@
<image-upload v-model="form.imgs" />
</el-form-item>
<el-form-item prop="auditStatus" :label="$t('是否审核')">
<el-form-item prop="auditStatus" :label="$t('审核状态')">
<template slot-scope="scope">
<el-select v-model="form.auditStatus">
<el-option
......@@ -554,10 +638,12 @@ import { uploadFile } from "@/api/infra/file";
import ImageUpload from "@/components/ImageUpload";
import PackagingType from "@/views/ecw/channel/componrnts/packaging-type.vue";
import ProductDialog from "@/views/ecw/product/product-dialog.vue";
import Template from "@/views/cms/template/index.vue";
export default {
name: "EcwProductIndex",
components: {
Template,
ProductDialog,
PackagingType,
ImageUpload,
......@@ -575,12 +661,7 @@ export default {
attrList: [],
//类型列表
typeList: [],
//材质列表
materialList: [],
//包装列表
packagingList: [],
//货柜位置
locationList: [],
// 遮罩层
loading: true,
......@@ -608,6 +689,12 @@ export default {
auditStatus: null,
status: null,
},
// 编号搜索条件
titleZhParam: {
key: "titleZhKey",
value: "",
},
// 表单参数
form: {},
formCopy: {},
......@@ -652,8 +739,11 @@ export default {
AuditStatusEnum: AuditStatusEnum,
statusDictDatas: getDictDatas(DICT_TYPE.COMMON_STATUS),
auditStatusDictDatas: getDictDatas(DICT_TYPE.AUDIT_STATUS),
// 材质列表
materialList: getDictDatas(DICT_TYPE.ECW_PRODUCT_MATERIAL),
//包装列表
packagingList: getDictDatas(DICT_TYPE.ECW_PACKAGING_TYPE),
//货柜位置
locationList: getDictDatas(DICT_TYPE.ECW_CONTAINER_LOCATION),
preferentialList: [],
exceptionProductId: 0, //新增商品异常传的id
......@@ -689,6 +779,32 @@ export default {
return productAttrArray.join(",");
};
},
getPackagingName() {
return (packagingId) => {
for (let index in this.packagingList) {
let typeItem = this.packagingList[index];
if (typeItem.id == packagingId) {
return this.$l(typeItem, "title");
}
}
};
},
getMaterialTypeName() {
return (materialTypeId) => {
for (let index in this.materialList) {
let typeItem = this.materialList[index];
if (typeItem.id == materialTypeId) {
return this.$l(typeItem, "title");
}
}
};
},
firstImg() {
return (imgString) => {
if (!imgString || imgString == "") return imgString;
......@@ -844,10 +960,22 @@ export default {
/** 查询列表 */
getList() {
this.loading = true;
// 处理查询参数
let params = { ...this.queryParams };
if (this.titleZhParam.value) {
params[this.titleZhParam.key] = this.titleZhParam.value;
}
params.filter = false;
this.addBeginAndEndTime(params, this.dateRangeCreateTime, "createTime");
// this.addBeginAndEndTime(params, this.dateRangeCreateTime, "createTime");
this.addBeginAndEndTime(
params,
this.dateRangeCreateTime,
"createTime",
false
);
// 执行查询
params.status = 0;
getProductPage(params).then((response) => {
......@@ -891,7 +1019,10 @@ export default {
/** 重置按钮操作 */
resetQuery() {
this.dateRangeCreateTime = [];
this.resetForm("queryForm");
this.titleZhParam.value = "";
this.queryParams.materialTypes =[];
this.handleQuery();
},
/** 新增按钮操作 */
......@@ -1018,7 +1149,13 @@ export default {
let params = { ...this.queryParams };
params.pageNo = undefined;
params.pageSize = undefined;
this.addBeginAndEndTime(params, this.dateRangeCreateTime, "createTime");
//this.addBeginAndEndTime(params, this.dateRangeCreateTime, "createTime");
this.addBeginAndEndTime(
params,
this.dateRangeCreateTime,
"createTime",
false
);
// 执行导出
this.$modal
.confirm(this.$t("是否确认导出所有商品数据项?"))
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment