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", // 付款人
......
This diff is collapsed.
This diff is collapsed.
<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>
This diff is collapsed.
......@@ -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