Commit 41ee17b6 authored by 邓春圆's avatar 邓春圆

Merge remote-tracking branch 'origin/dev' into dev

parents fc2029fc d6896598
...@@ -96,6 +96,44 @@ export function feeApplicationListByOrderId(query){ ...@@ -96,6 +96,44 @@ export function feeApplicationListByOrderId(query){
data:data, data:data,
}) })
} }
// 批量申请费用
export function feeApplicationCreateBatch(data){
return request({
url:'order/fee-application/create/batch',
method:'post',
data:data,
})
}
// 根据订单ID获取是否有正在申请的费用申请
export function getFeeApplicationApproveByOrderId(orderId){
return request({
url:'/order/fee-application/get/isApprove',
method:'get',
params: {id: orderId}
})
}
// 根据流程主键ID得到批量申请费用
export function getBatchFeeByBusinessId(businessId){
return request({
url:'/order/fee-application/getBatchFeeByBusinessId',
method:'get',
params: {businessId}
})
}
// 查询批量申请费用
export function feeApplicationGetBatch(params){
return request({
url:'/order/fee-application/get/batch',
method:'get',
params
})
}
//费用申请修改 //费用申请修改
export function applicationUpdate(data){ export function applicationUpdate(data){
return request({ return request({
......
...@@ -181,11 +181,18 @@ export default { ...@@ -181,11 +181,18 @@ export default {
id: this.processInstance.businessKey, id: this.processInstance.businessKey,
type: 2 type: 2
}, },
// 原来的费用申请
free_apply: { free_apply: {
component: "warehouseDetails", component: "warehouseDetails",
processId: this.processInstance.businessKey, processId: this.processInstance.businessKey,
type: 2 type: 2
}, },
// 2.0空运加的批量申请
batch_free_apply: {
component: () => import('@/views/ecw/order/components/BatchFeeApplication'),
businessId: this.processInstance.businessKey,
processInstanceId: this.$route.query.id
},
retired_warehouse: { retired_warehouse: {
component: "warehouseDetails", component: "warehouseDetails",
processId: this.processInstance.businessKey, processId: this.processInstance.businessKey,
......
...@@ -71,6 +71,8 @@ export default { ...@@ -71,6 +71,8 @@ export default {
this.form = { ...this.shipmentObj }; this.form = { ...this.shipmentObj };
if(this.form.destinationClearance && this.form.destinationClearance != 3){ if(this.form.destinationClearance && this.form.destinationClearance != 3){
this.form.destinationClearanceSelect = 1 this.form.destinationClearanceSelect = 1
}else{
this.form.destinationClearanceSelect = 3
} }
this.getChannelList() this.getChannelList()
}, },
......
...@@ -194,7 +194,7 @@ ...@@ -194,7 +194,7 @@
</template> </template>
<script> <script>
import { deletebox, getbox, getboxPage, exportboxExcel } from '@/api/ecw/box' import {deletebox, getbox, getboxPage, exportboxExcel, getNoticeList, dealCustomsSplitNotify} from '@/api/ecw/box'
import { getChannelList } from '@/api/ecw/channel' import { getChannelList } from '@/api/ecw/channel'
import { getWarehouseList } from '@/api/ecw/warehouse' import { getWarehouseList } from '@/api/ecw/warehouse'
import costForm from './costForm.vue' import costForm from './costForm.vue'
...@@ -342,13 +342,27 @@ export default { ...@@ -342,13 +342,27 @@ export default {
getWarehouseList().then((res) => (this.warehouseList = res.data)) getWarehouseList().then((res) => (this.warehouseList = res.data))
this.getList() this.getList()
this.getChannelList() this.getChannelList()
this.queryNotice()
}, },
methods: { methods: {
formatDate, formatDate,
getChannelList() { getChannelList() {
getChannelList().then((res) => (this.channelList = res.data)) getChannelList().then((res) => (this.channelList = res.data))
}, },
queryNotice() {
getNoticeList({
transportTypeList: this.transportTypes.map((item) => item.value),
}).then((res) => {
const { data } = res;
this.noticeList = data ?? [];
if (data.length) {
this.$set(this.dialogCfg, "title", this.$t("出货操作提醒"));
this.$set(this.dialogCfg, "dialogType", "notice");
this.$set(this.dialogCfg, "width", "650px");
this.$set(this.dialogCfg, "open", true);
}
});
},
/** 查询列表 */ /** 查询列表 */
getList() { getList() {
this.loading = true this.loading = true
...@@ -405,7 +419,10 @@ export default { ...@@ -405,7 +419,10 @@ export default {
this.$set(this.dialogCfg, 'fullscreen', false) this.$set(this.dialogCfg, 'fullscreen', false)
this.$set(this.dialogCfg, 'open', true) this.$set(this.dialogCfg, 'open', true)
this.currRow = { this.currRow = {
transportType: '3' transportType: '3',
destinationClearanceSelect: 1,
destinationClearance: 1,
deliveryType: 1
} }
}, },
/** 修改按钮操作 */ /** 修改按钮操作 */
...@@ -449,91 +466,105 @@ export default { ...@@ -449,91 +466,105 @@ export default {
return exportboxExcel(params) return exportboxExcel(params)
}) })
.then((response) => { .then((response) => {
this.$download.excel(response, '${table.classComment}.xls') this.$download.excel(response, this.$t("空运管理") + ".xls");
this.exportLoading = false this.exportLoading = false
}) })
.catch(() => {}) .catch(() => {})
}, },
/** 查看按钮操作 */ /** 查看按钮操作 */
handleCommand(row, command) { async handleCommand(row, command) {
switch (command) { console.log(command, row);
case "detail": switch (command) {
this.$router.push("/boxAir/query/" + row.id); case "detail":
break; this.$router.push("/boxAir/query/" + row.id);
case 'air': break;
this.$router.push('/boxAir/shippingAir/' + row.id) case 'air':
break this.$router.push('/boxAir/shippingAir/' + row.id)
break
case 'edit': case 'edit':
this.handleUpdate(row) this.handleUpdate(row)
break break
case 'delete': case 'delete':
this.handleDelete(row); this.handleDelete(row);
break; break;
case "editLadingBill": case "editLadingBill":
const cabinetLabel = this.getCabinetName(row.cabinetId); const cabinetLabel = this.getCabinetName(row.cabinetId);
const title = this.$t( const title = this.$t(
"查看提单 {selfNo} 柜号:{cubNo} 柜型:{cabinetLabel}", "查看提单 {selfNo} 柜号:{cubNo} 柜型:{cabinetLabel}",
{ {
selfNo: row.selfNo, selfNo: row.selfNo,
cubNo: row.cubNo, cubNo: row.cubNo,
cabinetLabel: cabinetLabel, cabinetLabel: cabinetLabel,
} }
); );
this.$set(this.dialogCfg, "title", title); this.$set(this.dialogCfg, "title", title);
this.$set(this.dialogCfg, "fullscreen", true); this.$set(this.dialogCfg, "fullscreen", true);
break; break;
case 'batchMarkup': case 'batchMarkup':
this.$router.push('/boxAir/batch_markup?shipmentId=' + row.id) this.$router.push('/boxAir/batch_markup?shipmentId=' + row.id)
break break
case "downloadPreloadGoodsList": case "downloadPreloadGoodsList":
downloadFile( downloadFile(
command, command,
{ shipmentId: row.id }, {shipmentId: row.id},
this.$t("预装单") + `(${row.selfNo}).xlsx`, this.$t("预装单") + `(${row.selfNo}).xlsx`,
"xlsx" "xlsx"
); );
break; break;
case "downloadLoadGoodsList": case "downloadLoadGoodsList":
downloadFile( downloadFile(
command, command,
{ shipmentId: row.id }, {shipmentId: row.id},
this.$t("已装单") + `(${row.selfNo}).xlsx`, this.$t("已装单") + `(${row.selfNo}).xlsx`,
"xlsx" "xlsx"
); );
break; break;
case "downloadReceivableList": case "downloadReceivableList":
downloadFile( downloadFile(
command, command,
{ shipmentId: row.id }, {shipmentId: row.id},
this.$t("应收汇总表") + `(${row.selfNo}).xlsx`, this.$t("应收汇总表") + `(${row.selfNo}).xlsx`,
"xlsx" "xlsx"
); );
break; break;
case "zipDownload": case "zipDownload":
downloadFile( downloadFile(
command, command,
{ shipmentId: row.id }, {shipmentId: row.id},
this.$t("提货单") + `(${row.selfNo}).zip`, this.$t("提货单") + `(${row.selfNo}).zip`,
"zip" "zip"
); );
break; break;
case "downloadAgentListFiles": case "downloadAgentListFiles":
case "downloadSoncapFiles": case "downloadSoncapFiles":
case "downloadLadingCopy": case "downloadLadingCopy":
downloadFileByUrl(command, { shipmentId: row.id }); downloadFileByUrl(command, {shipmentId: row.id});
break; break;
case "handle":
const { noticeType } = row;
if ([1, 2, 3, 4, 8].includes(noticeType)) {
this.$router.push("/boxAir/shippingAir/" + row.id);
}
if ([5, 6, 7].includes(noticeType)) {
this.$router.push("/boxAir/query/" + row.id);
}
if([9].includes(noticeType)){
await dealCustomsSplitNotify(row.notifyId)
}
this.closeDialog();
break;
} }
if (["editLadingBill", "cost", "error"].includes(command)) { if (["editLadingBill", "cost", "error"].includes(command)) {
this.currRow = row; this.currRow = row;
this.$set(this.dialogCfg, "dialogType", command); this.$set(this.dialogCfg, "dialogType", command);
this.$set(this.dialogCfg, "width", "600px"); this.$set(this.dialogCfg, "width", "600px");
this.$set(this.dialogCfg, "open", true); this.$set(this.dialogCfg, "open", true);
} }
}, },
}
} }
}
</script> </script>
......
...@@ -44,7 +44,7 @@ ...@@ -44,7 +44,7 @@
<el-table-column :label="$t('储位')" align="center" prop="positionNo" width="250px"> <el-table-column :label="$t('储位')" align="center" prop="positionNo" width="250px">
<template slot-scope="{ row }"> <template slot-scope="{ row }">
<div v-for="item in row.orderItemDOS" :key="item.orderItemId"> <div v-for="item in row.orderItemDOS" :key="item.orderItemId">
{{ notset(item.positionNo) }} {{ notset(getpositionNo(item.warehouseInInfoVO.orderLocationMergeVOSet)) }}
</div> </div>
</template> </template>
</el-table-column> </el-table-column>
...@@ -184,6 +184,14 @@ export default { ...@@ -184,6 +184,14 @@ export default {
}) })
return arr.toString() return arr.toString()
}, },
getpositionNo(arr){
if(!arr) return arr
let data = []
arr.forEach(item=>{
data.push(item.areaName+item.locationName)
})
return data.toString()
},
removePkg(row) { removePkg(row) {
deleteRelate(this.pkgData.id, row.orderId).then(() => { deleteRelate(this.pkgData.id, row.orderId).then(() => {
this.$message.success(this.$t('移出成功')) this.$message.success(this.$t('移出成功'))
......
...@@ -15,17 +15,17 @@ ...@@ -15,17 +15,17 @@
</div> </div>
<div style="width: 140px"> <div style="width: 140px">
<p style="margin-top: 1mm; text-align: center"> <p style="margin-top: 1mm; text-align: center">
<span style="text-align: center; font-weight: 600; font-size: 4mm">EC001141212</span> <span style="text-align: center; font-weight: 600; font-size: 4mm">{{ tagData.mergePkgNo }}</span>
</p> </p>
<div style="border: 1px solid #999;margin-left: 10px;" /> <div style="border-top: 1px solid #999;margin-left: 10px;" />
<p style="margin-top: 1mm; text-align: center"> <p style="margin-top: 1mm; text-align: center">
<span style="text-align: center; font-weight: 600; font-size: 4mm">{{ tagData.company }}</span> <span style="text-align: center; font-weight: 600; font-size: 4mm">{{ tagData.company }}</span>
</p> </p>
<div style="border: 1px solid #999;margin-left: 10px;" /> <div style="border-top: 1px solid #999;margin-left: 10px;" />
<p style="margin-top: 1mm; text-align: center"> <p style="margin-top: 1mm; text-align: center">
<span style="text-align: center; font-weight: 600; font-size: 4mm">{{ tagData.startWarehouse }} -> {{ tagData.endWarehouse }}</span> <span style="text-align: center; font-weight: 600; font-size: 4mm">{{ tagData.startWarehouse }} -> {{ tagData.endWarehouse }}</span>
</p> </p>
<div style="border: 1px solid #999;margin-left: 10px;" /> <div style="border-top: 1px solid #999;margin-left: 10px;" />
<div style="display: flex;margin-top: 10px;"> <div style="display: flex;margin-top: 10px;">
<div style="border-right: 2px solid #999;width: 45px;"> <div style="border-right: 2px solid #999;width: 45px;">
<p style="margin-top: 1mm; text-align: center"> <p style="margin-top: 1mm; text-align: center">
...@@ -40,10 +40,10 @@ ...@@ -40,10 +40,10 @@
</div> </div>
</div> </div>
</div> </div>
<div style="border: 1px solid #999;margin: 10px;" /> <div style="border-top: 1px solid #999;margin: 10px;" />
<div> <!--<div>
<img :src="tagData.barcodeUrl" style="width:250px;height: 50px;" /> <img :src="tagData.barcodeUrl" style="width:250px;height: 50px;" />
</div> </div>-->
<div style="height: 50px;"> <div style="height: 50px;">
<p style="margin-top: 1mm; text-align: center"> <p style="margin-top: 1mm; text-align: center">
<span style="text-align: center; font-weight: 600; font-size: 3mm">E&C Logistics: www.groupage.com</span> <span style="text-align: center; font-weight: 600; font-size: 3mm">E&C Logistics: www.groupage.com</span>
...@@ -110,4 +110,4 @@ export default { ...@@ -110,4 +110,4 @@ export default {
border: 1px solid #999; border: 1px solid #999;
border-radius: 5px; border-radius: 5px;
} }
</style> </style>
\ No newline at end of file
...@@ -112,7 +112,7 @@ export default { ...@@ -112,7 +112,7 @@ export default {
if(!arr) return arr if(!arr) return arr
let data = [] let data = []
arr.forEach(item=>{ arr.forEach(item=>{
data.push(item.locationName) data.push(item.areaName+item.locationName)
}) })
return data.toString() return data.toString()
}, },
......
...@@ -127,7 +127,7 @@ export default { ...@@ -127,7 +127,7 @@ export default {
}); });
const voName = this.$attrs.currNode.voName; const voName = this.$attrs.currNode.voName;
let oldData = { ...this.shipmentObj[voName] }; let oldData = { ...this.shipmentObj[voName] };
if(oldData.issueType == 0) oldData.issueType = 2 if(!oldData.issueType || oldData.issueType == 0) oldData.issueType = 2
oldData = formatNumberString(oldData, ["issueType"]); oldData = formatNumberString(oldData, ["issueType"]);
this.subMaterialObj = { this.subMaterialObj = {
...oldData, ...oldData,
......
...@@ -666,11 +666,11 @@ const constantDict = { ...@@ -666,11 +666,11 @@ const constantDict = {
billingMethod: [ billingMethod: [
{ {
value: "1", value: "1",
label: i18n.$t("电放"), label: i18n.$t("正本"),
}, },
{ {
value: "2", value: "2",
label: i18n.$t("正本"), label: i18n.$t("电放"),
}, },
], ],
// 是否有文件 // 是否有文件
......
<template> <template>
<div> <div>
<template v-if="!readonly">
<el-row type="flex" align="align" :gutter="10" > <el-row type="flex" align="align" :gutter="10" >
<el-col :span="6">空运订单重量上限(kg)</el-col> <el-col :span="6">空运订单重量上限(kg)</el-col>
<el-col :span="6" ><el-input v-model="value1.airWeightLimit"></el-input></el-col> <el-col :span="6" ><el-input v-model="value1.airWeightLimit"></el-input></el-col>
...@@ -8,12 +9,13 @@ ...@@ -8,12 +9,13 @@
</el-col> </el-col>
</el-row> </el-row>
<h1>空运清关费</h1> <h1>空运清关费</h1>
</template>
<div v-for="(item ,index) in value1[keyArr]"> <div v-for="(item ,index) in value1[keyArr]">
<el-row :gutter="10"> <el-row :gutter="10">
<el-col :span="4"> <el-col :span="4">
第{{index + 1 }}阶梯定价方案: 第{{index + 1 }}阶梯定价方案:
</el-col> </el-col>
<el-col :span="6"> <el-col :span="6" v-if="!readonly">
<el-button type="primary" @click="addInterval" v-if="index === 0" > <el-button type="primary" @click="addInterval" v-if="index === 0" >
添加区间 添加区间
</el-button> </el-button>
...@@ -54,6 +56,7 @@ import {getCurrencyPage} from "@/api/ecw/currency"; ...@@ -54,6 +56,7 @@ import {getCurrencyPage} from "@/api/ecw/currency";
import CurrencySelect from "@/views/ecw/channel/componrnts/currency-select.vue"; import CurrencySelect from "@/views/ecw/channel/componrnts/currency-select.vue";
import {getUnitList} from "@/api/ecw/unit"; import {getUnitList} from "@/api/ecw/unit";
import WeightSelect from "@/views/ecw/channel/componrnts/weight-select.vue"; import WeightSelect from "@/views/ecw/channel/componrnts/weight-select.vue";
import Template from "@/views/cms/template/index.vue";
export default { export default {
props:{ props:{
value:{ value:{
...@@ -63,10 +66,11 @@ export default { ...@@ -63,10 +66,11 @@ export default {
keyArr:{ keyArr:{
type:String, type:String,
default:'channelPriceStepClearanceList' default:'channelPriceStepClearanceList'
} },
readonly: Boolean
}, },
name: "packaging-type", name: "packaging-type",
components: {WeightSelect, CurrencySelect}, components: {Template, WeightSelect, CurrencySelect},
created() { created() {
getCurrencyPage(this.params).then(res => this.currencyList = res.data.list) getCurrencyPage(this.params).then(res => this.currencyList = res.data.list)
getUnitList().then(res => this.unitList = res.data) getUnitList().then(res => this.unitList = res.data)
......
...@@ -1019,6 +1019,10 @@ export default { ...@@ -1019,6 +1019,10 @@ export default {
item.transportId = this.form.transportId item.transportId = this.form.transportId
}) })
if(this.form.transportVO?.packageTypeArr){
this.form.transportVO.packageType = this.form.transportVO.packageTypeArr.join(',')
}
// 修改的提交 // 修改的提交
if (this.form.offerId != null) { if (this.form.offerId != null) {
let data = Object.assign({}, this.form, { let data = Object.assign({}, this.form, {
......
<template>
<div>
<h1>{{ $t('申请信息【订单信息】') }}</h1>
<el-descriptions :column="4" border>
<el-descriptions-item :label="$t('订单号')">{{ order.orderNo }}</el-descriptions-item>
<el-descriptions-item :label="$t('运输方式')">
<dict-tag :type="DICT_TYPE.ECW_TRANSPORT_TYPE" :value="order.transportId"></dict-tag>
</el-descriptions-item>
<el-descriptions-item :label="$t('出货方式')">
{{ order.channelName }}
</el-descriptions-item>
<el-descriptions-item :label="$t('订单状态')">
{{ order.statusMsg }}
</el-descriptions-item>
<el-descriptions-item :label="$t('唛头')">
{{ order.marks }}
</el-descriptions-item>
<el-descriptions-item :label="$t('始发仓')">{{ order.logisticsInfoDto.startTitleZh }}</el-descriptions-item>
<el-descriptions-item :label="$t('目的仓')">{{ order.logisticsInfoDto.destTitleZh }}</el-descriptions-item>
</el-descriptions>
<div style="font-size: 14px">
<p>{{ $t('申请理由') }}</p>
<div v-for="(item, index) in feeList" :key="item.id">
{{index + 1}}、【<dict-tag :type="DICT_TYPE.FEE_TYPE" :value="item.feeType" />】,
<dict-tag :value="item.payType" :type="DICT_TYPE.PAYMENT_TYPE" ></dict-tag>
{{ item.applicationFee }}{{ currencyName(item.applicationFeeCurrency) }}
{{$t('备注')}}{{ item.remarks || $t('')}}
</div>
</div>
</div>
</template>
<script>
import {
warehouseApprovalGetByFormId,
warehouseApprovalGetById,
warehouseAreaPositionList
} from "@/api/ecw/batchSingleApplication";
import {
applicationGetOrderByProcessId,
feeApplicationGet, feeApplicationGetBatch, getBatchFeeByBusinessId, getBatchFeeByProcessId,
getOrder,
getOrderPage,
getWarehouseUpdateApprovalInfo, qetBatchFeeByBusinessId
} from '@/api/ecw/order'
import { getChannelList } from '@/api/ecw/channel';
import Template from "@/views/cms/template";
import {getSupplierPage} from "@/api/ecw/supplier";
import { DICT_TYPE } from "@/utils/dict";
import { getCurrencyList } from "@/api/ecw/currency";
import {arrryToKeyedObjectBy} from '@/utils/index'
export default {
components: {Template},
props:{
businessId: [Number, String],
processInstanceId: String
},
name: "BatchFeeApplicationDetail",
data(){
return{
order: null,
feeList: [],
currencyList:[]
}
},
computed:{
currencyMap(){
return arrryToKeyedObjectBy(this.currencyList, 'id')
},
currencyName(){
return id => {
let obj = this.currencyMap[id]
if(obj) return this.$l(obj, 'title')
return this.$t('未知')
}
}
},
created() {
getCurrencyList().then(res => {
this.currencyList = res.data
})
getBatchFeeByBusinessId(this.businessId).then(res => {
console.log({res})
this.feeList = res.data
return getOrder(res.data[0].orderId)
}).then(res => {
this.order = res.data
})
},
methods:{
}
}
</script>
...@@ -159,7 +159,7 @@ ...@@ -159,7 +159,7 @@
{{order.isSingleTicketTransport? this.$t('是'):this.$t('否')}} {{order.isSingleTicketTransport? this.$t('是'):this.$t('否')}}
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item :label="$t('清关证书备注')"> <el-descriptions-item :label="$t('清关证书备注')">
{{ order.clearCertRemark }} {{ order.customsClearCertRemarks }}
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item :label="$t('是否拆包')"> <el-descriptions-item :label="$t('是否拆包')">
{{order.isUnpack? this.$t('是'):this.$t('否')}} {{order.isUnpack? this.$t('是'):this.$t('否')}}
...@@ -168,7 +168,10 @@ ...@@ -168,7 +168,10 @@
{{order.isSingleTicketTransport? this.$t('是'):this.$t('否')}} {{order.isSingleTicketTransport? this.$t('是'):this.$t('否')}}
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item :label="$t('特殊要求')"> <el-descriptions-item :label="$t('特殊要求')">
<dict-tag :type="DICT_TYPE.ORDER_SPECIAL_NEEDS" :value="order.packageTypeArr" /> <template v-for="packageType in order.packageType.split(',')">
<dict-tag class="mr-10" v-if="packageType" :key="packageType" :type="DICT_TYPE.ORDER_SPECIAL_NEEDS" :value="packageType" />
</template>
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item :label="$t('特殊要求备注')"> <el-descriptions-item :label="$t('特殊要求备注')">
{{order.packageRemarks}} {{order.packageRemarks}}
......
...@@ -1273,7 +1273,7 @@ export default { ...@@ -1273,7 +1273,7 @@ export default {
this.form.packageType = this.form.packageTypeArr.join(',') this.form.packageType = this.form.packageTypeArr.join(',')
// 付款人=发货人提示 // 付款人=发货人提示
if (+this.form.drawee === 1) { if (+this.form.drawee === 1 && !this.updateChannel) {
await this.$confirm(this.$t('请再次确认运费由您支付还是收货人支付?')) await this.$confirm(this.$t('请再次确认运费由您支付还是收货人支付?'))
} }
......
...@@ -12,35 +12,35 @@ ...@@ -12,35 +12,35 @@
</div></el-form-item> </div></el-form-item>
<el-form-item :label="$t('发货人')+':'"><div class="content">{{orderDetails.consignorVO ? orderDetails.consignorVO.name :''}}</div></el-form-item> <el-form-item :label="$t('发货人')+':'"><div class="content">{{orderDetails.consignorVO ? orderDetails.consignorVO.name :''}}</div></el-form-item>
<el-form-item :label="$t('唛头')"><div class="content">{{orderDetails.marks}}</div></el-form-item> <el-form-item :label="$t('唛头')"><div class="content">{{orderDetails.marks}}</div></el-form-item>
<el-form-item> <el-button @click="addCost">{{$t('添加申请')}}</el-button></el-form-item> <el-form-item> <el-button :disabled="!!processInstanceId" @click="addCost">{{$t('添加申请')}}</el-button></el-form-item>
</el-form> </el-form>
<el-table :data="list"> <el-table :data="list">
<el-table-column :label="$t('序号')" type="index"></el-table-column> <el-table-column :label="$t('序号')" type="index"></el-table-column>
<el-table-column :label="$t('费用类型')"> <el-table-column :label="$t('费用类型')">
<template v-slot:default = "scope"> <template v-slot:default = "scope">
<dict-selector :disabled="isModify[forbidden(scope.row)]" :type="DICT_TYPE.FEE_TYPE" v-model="scope.row.feeType" /> <dict-selector :disabled="!!processInstanceId" :type="DICT_TYPE.FEE_TYPE" v-model="scope.row.feeType" />
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('金额')"> <el-table-column :label="$t('金额')">
<template v-slot:default = 'scope'> <template v-slot:default = 'scope'>
<el-input :disabled="isModify[forbidden(scope.row)]" v-model.number="scope.row.applicationFee" ></el-input> <el-input :disabled="!!processInstanceId" v-model.number="scope.row.applicationFee" ></el-input>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('货币类型')"> <el-table-column :label="$t('货币类型')">
<template v-slot:default = 'scope'> <template v-slot:default = 'scope'>
<el-select :disabled="isModify[forbidden(scope.row)]" v-model="scope.row.applicationFeeCurrency"> <el-select :disabled="!!processInstanceId" v-model="scope.row.applicationFeeCurrency">
<el-option v-for="item in JSON.parse(currencys)" :key="item.id" :label="item.titleZh" :value="item.id" /> <el-option v-for="item in JSON.parse(currencys)" :key="item.id" :label="item.titleZh" :value="item.id" />
</el-select> </el-select>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('付款类型')"> <el-table-column :label="$t('付款类型')">
<template v-slot = {row}> <template v-slot = {row}>
<dict-selector :disabled="isModify[forbidden(row)]" :type="DICT_TYPE.PAYMENT_TYPE" v-model="row.payType" /> <dict-selector :disabled="!!processInstanceId" :type="DICT_TYPE.PAYMENT_TYPE" v-model="row.payType" />
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('备注')"> <el-table-column :label="$t('备注')">
<template v-slot:default="scope"> <template v-slot:default="scope">
<el-input :disabled="isModify[forbidden(scope.row)]" v-model="scope.row.remarks" type="textarea"></el-input> <el-input :disabled="!!processInstanceId" v-model="scope.row.remarks" type="textarea"></el-input>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('确认收款')"> <el-table-column :label="$t('确认收款')">
...@@ -55,9 +55,10 @@ ...@@ -55,9 +55,10 @@
</el-table-column> </el-table-column>
<el-table-column :label="$t('操作')"> <el-table-column :label="$t('操作')">
<template v-slot:default = 'scope'> <template v-slot:default = 'scope'>
<el-button type="text" v-if="scope.row.status !== 0&&scope.row.status !== 1">{{STATUS[scope.row.status]}}</el-button> <!--<el-button type="text" v-if="scope.row.status !== 0&&scope.row.status !== 1">{{STATUS[scope.row.status]}}</el-button>
<el-button type="text" v-if="scope.row.status == 1" @click="examineFn">{{$t('审核中')}}</el-button> <el-button type="text" v-if="scope.row.status == 1" @click="examineFn">{{$t('审核中')}}</el-button>
<el-button type="text" v-if="scope.row.status === 2" @click="modify(scope.row)">{{$t('修改')}}</el-button> <el-button type="text" v-if="scope.row.status === 2" @click="modify(scope.row)">{{$t('修改')}}</el-button>-->
<el-button type="text" :disabled="!!processInstanceId" @click="del(scope.$index)">删除</el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
...@@ -65,9 +66,9 @@ ...@@ -65,9 +66,9 @@
<work-flow xmlkey="free_apply" v-model="selectedUsers" /> <work-flow xmlkey="free_apply" v-model="selectedUsers" />
</div> </div>
<div style="text-align: center;margin-top: 20px;"> <div style="text-align: center;margin-top: 20px;">
<el-button v-if="!IsExamine" style="margin-right: 30px;" @click="submit">{{$t('提交')}}</el-button> <el-button type="primary" v-if="!processInstanceId" style="margin-right: 30px;" @click="submit">{{$t('提交')}}</el-button>
<el-button v-if="IsExamine" style="margin-right: 30px;" @click="examineFn">{{$t('审核中')}}</el-button> <el-button type="primary" v-if="processInstanceId" style="margin-right: 30px;" @click="goProcessDetail">{{$t('审核中')}}</el-button>
<el-button v-if="IsExamine" style="margin-right: 30px;" @click="cancel">{{$t('取消审核')}}</el-button> <el-button type="primary" v-if="processInstanceId" style="margin-right: 30px;" @click="cancel">{{$t('取消审核')}}</el-button>
<el-button @click="$emit('update:dialogVisible',false)">{{$t('返回')}}</el-button> <el-button @click="$emit('update:dialogVisible',false)">{{$t('返回')}}</el-button>
</div> </div>
</div> </div>
...@@ -78,10 +79,14 @@ ...@@ -78,10 +79,14 @@
<script> <script>
import { import {
getOrder, getOrder,
feeApplicationCreate, feeApplicationCreateBatch,
ApplicationListByOrderId, ApplicationListByOrderId,
applicationUpdate, applicationUpdate,
feeApplicationListByOrderId, feeApplicationCancel feeApplicationListByOrderId,
feeApplicationCancel,
getFeeApplicationApproveByOrderId,
getBatchFeeByProcessId,
qetBatchFeeByBusinessId, getBatchFeeByBusinessId
} from "@/api/ecw/order"; } from "@/api/ecw/order";
import { getDictDatas, DICT_TYPE } from '@/utils/dict'; import { getDictDatas, DICT_TYPE } from '@/utils/dict';
import Template from "@/views/cms/template"; import Template from "@/views/cms/template";
...@@ -100,7 +105,11 @@ export default { ...@@ -100,7 +105,11 @@ export default {
data(){ data(){
return { return {
orderDetails:{}, orderDetails:{},
// 费用列表
list:[], list:[],
// 审核ID,没有则表示不在审核中
processInstanceId: null,
DICT_TYPE, DICT_TYPE,
getDictDatas, getDictDatas,
STATUS:{}, STATUS:{},
...@@ -114,24 +123,28 @@ export default { ...@@ -114,24 +123,28 @@ export default {
this.STATUS[e.value] = e.label this.STATUS[e.value] = e.label
}) })
}, getOrder(this.orderId).then(res => {
computed:{ this.orderDetails = res.data
forbidden(){ })
return (row)=>{
return this.list.findIndex(e => e.id === row.id) // 查询是否有审核中的费用申请
getFeeApplicationApproveByOrderId(this.orderId).then(res => {
if(res.data.formId){
this.processInstanceId = res.data.formId
getBatchFeeByBusinessId(res.data.orderApprovalId).then(res => {
this.list = res.data
})
} }
}, })
IsExamine(){
return this.list.some(e => e.status === 1)
}
}, },
methods:{ methods:{
del(index){
this.$confirm(this.$t("确定要删除此条费用申请么?")).then(() => {
this.list.splice(index, 1)
})
},
addCost(){ addCost(){
if(this.list.some(e => e.status === 0 || e.status === 1)){ this.list.push({
return this.$message.success(this.$t('当前有申请费用为审核中或未提交,请审核后在申请'));
}
this.list.push(
{
orderId:this.orderId, orderId:this.orderId,
feeType:undefined,//费用申请类型 feeType:undefined,//费用申请类型
applicationFee:undefined,//金额 applicationFee:undefined,//金额
...@@ -140,54 +153,24 @@ export default { ...@@ -140,54 +153,24 @@ export default {
receiveFlag:0, receiveFlag:0,
applicationAuthor:undefined, applicationAuthor:undefined,
status:0, status:0,
}
)
this.isModify.push(false)
this.isModifyIf = false;
},
submit(){
if(this.isModifyIf){
applicationUpdate({...this.list[this.isModify.findIndex(e => e === false)],status:1}).then(r => {
if(r.code === 0){
this.$emit('update:dialogVisible',false)
this.$message.success(this.$t('修改成功'));
}
})
}else {
if(this.list[this.list.length - 1].status === 0){
feeApplicationCreate( {...this.list[this.list.length - 1],status:1,copyUserId:this.selectedUsers}).then(r=>{
if(r.code === 0){
this.$emit('update:dialogVisible',false)
this.$message.success(this.$t('添加成功'));
this.selectedUsers = [];
}
}) })
}else {
this.$message.success(this.$t('当前有申请费用为审核中或未提交,请审核后在申请'));
}
}
}, },
getOrderList(){ submit(){
ApplicationListByOrderId({orderId: this.orderId}).then(r => { feeApplicationCreateBatch( {
orderFeeApplicationCreateReqVOList: this.list,
copyUserId:this.selectedUsers,
orderId: this.orderId
}).then(r=>{
if(r.code === 0){ if(r.code === 0){
this.list = r.data; this.$emit('update:dialogVisible',false)
this.list.forEach(()=>this.isModify.push(true)) this.$message.success(this.$t('添加成功'));
let p = this.list.find(e => e.status === 1) this.selectedUsers = [];
} }
}) })
}, },
modify(row){ goProcessDetail(){
if(this.list.some(i => i.status === 0 || i.status === 1))return this.$message.warning(this.$t('当前有未提交的数据或审核中的数据不能修改')) this.$emit('update:dialogVisible',false)
this.isModifyIf = true; this.$router.push('/bpm/process-instance/detail?id=' + this.processInstanceId)
this.isModify.forEach((item,index)=>{
this.$set(this.isModify, index, true )
})
this.$set(this.isModify, this.list.findIndex(e => e.id === row.id), false )
},
examineFn(){
let item = this.list.find(e => e.status === 1);
console.log(item)
this.$router.push({path:'/bpm/process-instance/detail',query:{id:item.bpmProcessId}})
}, },
cancel(){ cancel(){
this.$prompt(this.$t('请输入取消原因'), this.$t('提示'), { this.$prompt(this.$t('请输入取消原因'), this.$t('提示'), {
...@@ -195,7 +178,7 @@ export default { ...@@ -195,7 +178,7 @@ export default {
cancelButtonText: this.$t('取消'), cancelButtonText: this.$t('取消'),
}).then(({ value }) => { }).then(({ value }) => {
let item = this.list.find(e => e.status === 1); let item = this.list.find(e => e.status === 1);
feeApplicationCancel({huifu:value,bpmProcessId:item.bpmProcessId}).then(r => { feeApplicationCancel({huifu:value,bpmProcessId: this.processInstanceId}).then(r => {
this.$message({ this.$message({
type: 'success', type: 'success',
message:this.$t('取消成功') message:this.$t('取消成功')
......
...@@ -497,7 +497,7 @@ ...@@ -497,7 +497,7 @@
<batch-pickup v-if="showBatchPickup" @close="onBatchClose" @success="onBatchClose"/> <batch-pickup v-if="showBatchPickup" @close="onBatchClose" @success="onBatchClose"/>
<withdrawal v-if="show" :dialog-visible="show" :orderId="orderId" ></withdrawal> <withdrawal v-if="show" :dialog-visible="show" :orderId="orderId" ></withdrawal>
<batch-single-application @getList="getList" :order-list="orderId" :dialog-visible.sync="warehouseBol"></batch-single-application> <batch-single-application @getList="getList" :order-list="orderId" :dialog-visible.sync="warehouseBol"></batch-single-application>
<fee-application :order-id="orderId" :currencys="JSON.stringify(currencyList)" :dialog-visible.sync="feeApplicationBol"></fee-application> <fee-application v-if="feeApplicationBol" :order-id="orderId" :currencys="JSON.stringify(currencyList)" :dialog-visible.sync="feeApplicationBol"></fee-application>
<merge-log :order-no="showMergedLogOrderNo" v-if="showMergedLogOrderNo !== null" @close="showMergedLogOrderNo=null" /> <merge-log :order-no="showMergedLogOrderNo" v-if="showMergedLogOrderNo !== null" @close="showMergedLogOrderNo=null" />
<pickup-log v-if="showPickupLogOrderNo" :order-no="showPickupLogOrderNo" @close="showPickupLogOrderNo=null" @delete="getList" /> <pickup-log v-if="showPickupLogOrderNo" :order-no="showPickupLogOrderNo" @close="showPickupLogOrderNo=null" @delete="getList" />
<SplitRevoke v-if="splitRevokeOrderId" :order-id="splitRevokeOrderId" @close="splitRevokeOrderId=null;getList()"></SplitRevoke> <SplitRevoke v-if="splitRevokeOrderId" :order-id="splitRevokeOrderId" @close="splitRevokeOrderId=null;getList()"></SplitRevoke>
......
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
<span>{{ order.orderNo }}</span> <span>{{ order.orderNo }}</span>
</el-form-item> </el-form-item>
<el-form-item :label="$t('线路')">{{ $t('') }}<dict-tag :type="DICT_TYPE.TRANSPORT_TYPE" :value="order.transportId" /> <el-form-item :label="$t('线路')">{{ $t('') }}<dict-tag :type="DICT_TYPE.TRANSPORT_TYPE" :value="order.transportId" />
{{ channel ? $l(channel, 'title') : '' }} {{ order.channelName }}
{{$t("从【{departureName}】发往【{objectiveName}", {departureName: $l(order.logisticsInfoDto, 'startTitle'), objectiveName: $l(order.logisticsInfoDto, 'destTitle')})}} {{$t("从【{departureName}】发往【{objectiveName}", {departureName: $l(order.logisticsInfoDto, 'startTitle'), objectiveName: $l(order.logisticsInfoDto, 'destTitle')})}}
</el-form-item> </el-form-item>
</el-form> </el-form>
...@@ -109,11 +109,11 @@ export default { ...@@ -109,11 +109,11 @@ export default {
// getProductType(this.orderItem.prodType).then(res => { // getProductType(this.orderItem.prodType).then(res => {
// this.productType = res.data // this.productType = res.data
// }) // })
if(this.order.channelId){ /*if(this.order.channelId){
getChannel(this.order.channelId).then(res => { getChannel(this.order.channelId).then(res => {
this.channel = res.data this.channel = res.data
}) })
} }*/
}, },
data() { data() {
return { return {
...@@ -125,7 +125,7 @@ export default { ...@@ -125,7 +125,7 @@ export default {
ccIdArr: [], ccIdArr: [],
form: { }, form: { },
productType: null, productType: null,
channel: null // channel: null
} }
}, },
watch:{ watch:{
......
<template>
<div class="app-container">
<!-- 搜索工作栏 -->
<el-card>
<div slot="header" class="card-title">{{$t('拆单申请')}}-{{orderData.orderNo||''}}</div>
<div class="btn-header">
<span class="card-title">{{$t('原单信息')}}</span>
<div>
<span v-if="orderData.abnormalState!=0" class="red">{{$t('异常无法拆单')}}</span>
<el-button v-else type="primary" @click="addSplit" :disabled="orderData.inWarehouseState==207">{{$t('新建拆单')}} </el-button>
</div>
</div>
<el-descriptions :column="4">
<el-descriptions-item :label="$t('唛头')">
{{orderData.marks?orderData.marks:$t('')}}
</el-descriptions-item>
<el-descriptions-item :label="$t('已到箱数/总箱数')">
<span>{{orderData.sumNum||0}}/{{orderData.costVO?orderData.costVO.totalNum:0}}</span>
</el-descriptions-item>
<el-descriptions-item :label="$t('订单状态')">
<!-- <dict-tag :type="DICT_TYPE.ORDER_STATUS" :value="orderData.status" /> -->
{{orderData.abnormalState!=0?$t('异常'):$t('正常')}}
</el-descriptions-item>
<el-descriptions-item :label="$t('送货日期')">
{{orderData.deliveryDate||$t('')}}
</el-descriptions-item>
<el-descriptions-item :label="$t('运输方式')">
<dict-tag :type="DICT_TYPE.ECW_TRANSPORT_TYPE" :value="orderData.transportId" />
</el-descriptions-item>
<el-descriptions-item :label="$t('始发地')" >
<template v-if="orderData.logisticsInfoDto">
{{$l(orderData.logisticsInfoDto, 'startTitle')}}
</template>
<template v-else>{{$t('')}}</template>
</el-descriptions-item>
<el-descriptions-item :label="$t('目的地')" :span="2">
<template v-if="orderData.logisticsInfoDto">
{{$l(orderData.logisticsInfoDto, 'destTitle')}}
</template>
<template v-else>{{$t('')}}</template>
</el-descriptions-item>
<el-descriptions-item :label="$t('发货人姓名')">
{{orderData.consignorVO?orderData.consignorVO.name||$t('无'):$t('无')}}
</el-descriptions-item>
<el-descriptions-item :label="$t('发货公司')">
{{orderData.consignorVO?orderData.consignorVO.company||$t('无'):$t('无')}}
</el-descriptions-item>
<el-descriptions-item :label="$t('发货电话')">
{{!orderData.consignorVO?$t('无'):!orderData.consignorVO.phone?$t('无'):(checkCode(orderData.consignorVO.countryCode)+orderData.consignorVO.phone)}}
</el-descriptions-item>
</el-descriptions>
<el-descriptions :column="4">
<el-descriptions-item :label="$t('收货人姓名')">
{{orderData.consigneeVO?orderData.consigneeVO.name||$t('无'):$t('无')}}
</el-descriptions-item>
<el-descriptions-item :label="$t('收货公司')">
{{orderData.consigneeVO?orderData.consigneeVO.company||$t('无'):$t('无')}}
</el-descriptions-item>
<el-descriptions-item :label="$t('收货电话')">
{{!orderData.consigneeVO?$t('无'):!orderData.consigneeVO.phone?$t('无'):(checkCode(orderData.consigneeVO.countryCode)+orderData.consigneeVO.phone)}}
</el-descriptions-item>
</el-descriptions>
</el-card>
<el-card class="card">
<!-- 列表 -->
<div slot="header" class="card-title">{{$t('货物信息')}}</div>
<el-table id='table' v-loading="loading" border :data="orderData.orderItemVOList" :summary-method="getSummaries" show-summary>
<el-table-column :label="$t('序号')" align="center" prop="id" type="index" width="60">
<template slot-scope="scope" >
<span>{{scope.$index + 1}}</span>
</template>
</el-table-column>
<el-table-column :label="$t('品名')" align="center">
<template slot-scope="scope">
<el-row>{{scope.row.prodTitleEn}}</el-row>
<el-row>{{scope.row.prodTitleZh}}</el-row>
</template>
</el-table-column>
<el-table-column :label="$t('填单货物属性')" align="center" width="200">
<template slot-scope="scope">
<el-row>
<span>{{$t('品牌')}}
<dict-tag :type="DICT_TYPE.ECW_IS_BRAND" :value="scope.row.brandType" />
</span>
</el-row>
<el-row>
<span>{{$t('箱数')}}{{scope.row.num||$t('未填')}}</span>
</el-row>
<el-row>
<span>{{$t('体积')}}{{scope.row.volume||$t('未填')}}</span>
</el-row>
<el-row>
<span>{{$t('重量')}}{{scope.row.weight||$t('未填')}}kg</span>
</el-row>
</template>
</el-table-column>
<el-table-column :label="$t('入库货物属性')" align="center" width="400">
<template slot-scope="scope">
<el-row v-if="scope.row.warehouseInInfoVO">
<span>{{$t('规格')}}{{scope.row.warehouseInInfoVO?scope.row.warehouseInInfoVO.boxGauge:0}}</span>
</el-row>
<el-row v-if="scope.row.warehouseInInfoVO">
<span>{{$t('品牌')}}
<template v-if="scope.row.brandName">{{scope.row.brandName}}</template>
<dict-tag v-else :type="DICT_TYPE.ECW_IS_BRAND" :value="scope.row.feeType" />
</span>
<span style="margin-left: 10px;">{{$t('箱数')}}:{{!scope.row.warehouseInInfoVO?0:scope.row.warehouseInInfoVO.cartonsNum}}</span>
<span style="margin-left: 10px;">{{$t('体积')}}:{{!scope.row.warehouseInInfoVO?0:scope.row.warehouseInInfoVO.volume}}m³</span>
<span style="margin-left: 10px;">{{$t('重量')}}:{{!scope.row.warehouseInInfoVO?0:scope.row.warehouseInInfoVO.weight}}kg</span>
</el-row>
<el-row v-if="!scope.row.warehouseInInfoVO">
<span>{{$t('暂时没有入仓信息')}}</span>
</el-row>
</template>
</el-table-column>
<el-table-column :label="$t('最后操作时间')" align="center">
<template slot-scope="scope">
<span>{{parseTime(scope.row.updateTime)}}</span>
</template>
</el-table-column>
<el-table-column :label="$t('状态')" align="center">
<template slot-scope="scope">
<!-- {{orderData.abnormalState!=0?$t('异常'):$t('正常')}} -->
<dict-tag :type="DICT_TYPE.ORDER_ITEM_STATUS" :value="scope.row.itemStatus" />
</template>
</el-table-column>
</el-table>
</el-card>
<el-card class="card" v-if="splitData.length>0">
<!-- 列表 -->
<div slot="header" class="card-title">{{$t('拆单信息')}}</div>
<div v-for="(item, index) in splitData" :key="index">
<div class="btn-header">
<div>
<p class="card-info">
<span class="card-title">
{{item.orderNo}}
</span>
<dict-tag :type="DICT_TYPE.ECW_TRANSPORT_TYPE" :value="item.transportId" />
<span>{{$t('发往')}}:{{importCityName(item.dstWarehouseId)}}</span>
</p>
</div>
<div>
<el-button v-if="index==0" disabled type="primary" @click="addShop(index)">{{$t('放入')}}</el-button>
<el-button v-if="index!=0" type="primary" @click="addShop(index)">{{$t('放入')}}</el-button>
<!--<el-button v-if="index==0" disabled type="primary" plain @click="deleteSplit(item.id)">{{$t('删除')}}</el-button>-->
<el-button :disabled="index < splitData.length - 1" type="primary" plain @click="deleteSplit(item.id)">{{$t('删除')}}</el-button>
</div>
</div>
<el-table v-if="item.orderSplitItemBackVOList" border :data="item.orderSplitItemBackVOList">
<el-table-column :label="$t('序号')" align="center" prop="id" type="index">
<template slot-scope="scope">
<span>{{scope.$index + 1}}</span>
</template>
</el-table-column>
<el-table-column :label="$t('中文名')" align="center" prop="prodTitleZh" />
<el-table-column :label="$t('英文名')" align="center" prop="prodTitleEn" />
<el-table-column :label="$t('品牌')" align="center">
<template slot-scope="scope">
<template v-if="scope.row.brandName">{{scope.row.brandName}}</template>
<dict-tag v-else :type="DICT_TYPE.ECW_IS_BRAND" :value="scope.row.feeType" />
</template>
</el-table-column>
<el-table-column :label="$t('入仓体积')" align="center" >
<template slot-scope="scope">
<el-input v-model="scope.row.volume" @change="updateField(scope.row, 'volume')" size="mini" :disabled="index === 0">
<span slot="append"></span>
</el-input>
</template>
</el-table-column>
<el-table-column :label="$t('收费体积')" align="center" >
<template slot-scope="scope">
<el-input v-model="scope.row.chargeVolume" @change="updateField(scope.row, 'chargeVolume')" size="mini" :disabled="index === 0">
<span slot="append"></span>
</el-input>
</template>
</el-table-column>
<el-table-column :label="$t('入仓重量')" align="center">
<template slot-scope="scope">
<el-input v-model="scope.row.weight" @change="updateField(scope.row, 'weight')" size="mini" :disabled="index === 0">
<span slot="append">kg</span>
</el-input>
</template>
</el-table-column>
<el-table-column :label="$t('收费重量')" align="center">
<template slot-scope="scope">
<el-input v-model="scope.row.chargeWeight" @change="updateField(scope.row, 'chargeWeight')" size="mini" :disabled="index === 0">
<span slot="append">kg</span>
</el-input>
</template>
</el-table-column>
<el-table-column :label="$t('货值')" align="center">
<template slot-scope="scope">
<el-input v-model="scope.row.worth" @change="updateField(scope.row, 'worth')" size="mini" :disabled="index === 0">
<span slot="append">{{ $t('美元') }}</span>
</el-input>
</template>
</el-table-column>
<el-table-column :label="$t('箱数')" align="center">
<template slot-scope="scope">
<span>{{scope.row.num}}</span>
</template>
</el-table-column>
<el-table-column :label="$t('操作')" align="center">
<template slot-scope="scope">
<el-button v-if="index==0" disabled size="mini" type="text" icon="el-icon-delete" @click="removeShop(scope.row.id)">{{$t('移出')}}</el-button>
<el-button v-else size="mini" type="text" icon="el-icon-delete" @click="removeShop(scope.row.id)">{{$t('移出')}}</el-button>
</template>
</el-table-column>
</el-table>
</div>
</el-card>
<work-flow xmlkey="split_order" v-model="selectedUsers"></work-flow>
<div slot="footer" class="card footer_btn" v-if="orderData.abnormalState==0">
<el-button v-if="orderData.inWarehouseState!=207" type="primary" @click="submitForm">{{$t('提交申请')}}</el-button>
<el-button v-if="orderData.inWarehouseState!=207" plain type="primary" @click="$store.dispatch('tagsView/delCurrentView')">{{$t('取消')}}</el-button>
<el-button v-if="orderData.inWarehouseState==207" type="primary" @click="$router.push(`/bpm/process-instance/detail?id=`+orderApprovalBackVO.applyingFormId)">{{$t('审核中')}}</el-button>
<el-button v-if="orderData.inWarehouseState==207" plain type="primary" @click="dialogVisible = true">{{$t('取消审核')}}</el-button>
<el-button v-if="orderData.inWarehouseState==207" plain type="primary" @click="$store.dispatch('tagsView/delCurrentView')">{{$t('返回')}}</el-button>
</div>
<!-- 对话框(添加 / 修改) -->
<el-dialog :title="$t('新建拆单')" :visible.sync="open" width="400px" append-to-body>
<el-form ref="formSplit" :model="form" :rules="rules" label-width="80px">
<el-form-item :label="$t('运输方式')">
<dict-selector :clearable="true" :type="DICT_TYPE.ECW_TRANSPORT_TYPE" @change="changeTransport" v-model="form.transportId" />
</el-form-item>
<el-form-item :label="$t('出货渠道')" v-if="getDictData(DICT_TYPE.ECW_TRANSPORT_TYPE, form.transportId).cssClass == 'channel'">
<el-select v-model="form.channelId" :placeholder="$t('请选择出货渠道')" :clearable="true">
<el-option :disabled="getDictData(DICT_TYPE.ECW_TRANSPORT_TYPE, form.transportId).cssClass != 'channel'" v-for="item in channelData" :key="item.channelId" :label="$l(item, 'name')" :value="item.channelId"/>
</el-select>
</el-form-item>
<el-form-item :label="$t('目的仓库')" >
<el-select v-model="form.destWarehouseId" @change="changeDeatWarehouseId" :placeholder="$t('请选择目的仓库')" :clearable="true">
<el-option v-for="items in importCityList" :label="$l(items, 'title')" :value="items.id" :key="items.id" ></el-option>
</el-select>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="haddleAdd">{{$t('确定')}}</el-button>
<el-button @click="cancel">{{$t('取消')}}</el-button>
</div>
</el-dialog>
<!-- 对话框(添加 / 修改) -->
<el-dialog :title="$t('放入品名')" :visible.sync="shopOpen" width="500px" append-to-body>
<el-form ref="shopForm" :model="shopForm" :rules="shopRules" label-width="120px">
<el-form-item :label="$t('中文品名')" v-if="splitData.length>0">
<el-select v-model="shopForm.pordid" :placeholder="$t('请选择中文品名')" @change="changeProdTitleZh" clearable>
<el-option v-for="item in splitData[0].orderSplitItemBackVOList" :label="item.prodTitleZh" :value="item.id" :key="item.prodTitleZh" ></el-option>
</el-select>
</el-form-item>
<el-form-item :label="$t('英文品名')" v-if="splitData.length>0">
<el-select v-model="shopForm.pordid" :placeholder="$t('请选择英文品名')" @change="changeProdTitleZh" clearable>
<el-option v-for="item in splitData[0].orderSplitItemBackVOList" :label="item.prodTitleEn" :value="item.id" :key="item.prodTitleEn" ></el-option>
</el-select>
</el-form-item>
<el-form-item :label2="$t('剩余箱数')" v-if="mainOrderItem.orderItemId">
{{$t('剩余箱数')}}{{ shopForm.sum || 0 }}<!--,可放入箱数:{{ mainOrderItem.num - 1 }}-->
</el-form-item>
<el-form-item :label="$t('放入箱数')">
<el-input-number v-model="shopForm.num" @change="numChange" controls-position="right" :min="1" :max="mainOrderItem.num"></el-input-number>
</el-form-item>
<el-form-item v-if="quantityshow" :label="$t('放入数量')+'('+$t('个')+')'">
<el-input-number v-model="shopForm.quantity" controls-position="right" :min="1" :max="mainOrderItem.quantity-1" :placeholder="$t('最多可放入{quantity}', {
quantity: mainOrderItem.quantity-1
})"></el-input-number>
</el-form-item>
<el-form-item v-if="mainOrderItem.orderItemId">
<div>{{ $t('剩余入仓方数') }}:{{ mainOrderItem.volume || 0 }}m³<!--,{{$t('可放入仓方数')}}:{{ (mainOrderItem.volume - 0.01).toFixed(2) }}m³--></div>
<div>{{$t('剩余收费方数')}}:{{ mainOrderItem.chargeVolume || 0 }}m³<!--,{{$t('可放入收费方数')}}:{{ (mainOrderItem.chargeVolume - 0.01).toFixed(2) }}m³--></div>
</el-form-item>
<el-form-item :label="$t('入仓方数')">
<el-input-number v-model="shopForm.volume" controls-position="right" :min="0" :max="mainOrderItem.volume"></el-input-number>
</el-form-item>
<el-form-item :label="$t('收费方数')">
<el-input-number v-model="shopForm.chargeVolume" controls-position="right" :min="0" :max="mainOrderItem.chargeVolume"></el-input-number>
</el-form-item>
<el-form-item v-if="mainOrderItem.orderItemId">
<div>{{$t('剩余入仓重量')}}:{{ mainOrderItem.weight || 0 }}kg<!--,{{$t('可放入重量')}}:{{ mainOrderItem.weight }}kg--></div>
<div>{{$t('剩余收费重量')}}:{{ mainOrderItem.chargeWeight || 0 }}kg<!--,{{$t('可放入收费重量')}}:{{ mainOrderItem.chargeWeight }}kg--></div>
</el-form-item>
<el-form-item :label="$t('入仓重量')">
<el-input-number v-model="shopForm.weight" controls-position="right" :min="0" :max="mainOrderItem.weight"></el-input-number>
</el-form-item>
<el-form-item :label="$t('收费重量')">
<el-input-number v-model="shopForm.chargeWeight" controls-position="right" :min="0" :max="mainOrderItem.chargeWeight"></el-input-number>
</el-form-item>
<el-form-item v-if="mainOrderItem.orderItemId">
<div>{{$t('剩余货值')}}:{{ mainOrderItem.worth || 0 }}{{ $t('美元') }}</div>
</el-form-item>
<el-form-item :label="$t('放入货值')">
<el-input-number v-model="shopForm.worth" controls-position="right" :min="0" :max="mainOrderItem.worth">
<template slot="append">{{ $t('') }}</template>
</el-input-number>
</el-form-item>
<el-form-item :label="$t('备注信息')+':'">
<el-input v-model="shopForm.remark"></el-input>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="shopAdd">{{$t('确定')}}</el-button>
<el-button @click="shopCancel">{{$t('取消')}}</el-button>
</div>
</el-dialog>
<el-dialog
:title="$t('提示')"
:visible.sync="dialogVisible"
width="30%">
<span class="cancel_notice">{{$t('拆单申请正在审核中,你确定取消拆单申请吗?')}}</span>
<div class="cancel_content">
<span>{{$t('取消原因:')}}</span>
<el-input v-model="reason" :placeholder="$t('请输入取消原因')"></el-input>
</div>
<span slot="footer" class="dialog-footer">
<el-button @click="dialogVisible = false">{{$t('取消')}}</el-button>
<el-button type="primary" @click="cancelSplit">{{$t('确定')}}</el-button>
</span>
</el-dialog>
</div>
</template>
<script>
import {getDictData, getDictDatas,DICT_TYPE} from '@/utils/dict'
import {
getSplitList,
splitApply,
createSplit,
cancelApply,
createSplitItem,
deleteSplitItem,
deleteSplit,
deleteAllSplit
} from "@/api/ecw/orderHandle"
import {getWarehouseList, quantityRequired} from '@/api/ecw/warehouse'
import {getChannelList} from '@/api/ecw/channel'
import WorkFlow from '@/components/WorkFlow'
import {getOrder, splitItemUpdate} from '@/api/ecw/order'
import Decimal from 'decimal.js'
import Template from "@/views/cms/template";
export default {
name: "SplitApply",
components: {
Template,
WorkFlow
},
data() {
return {
checked:false,
reason:'',
dialogVisible:false,
orderData:{},
splitData:[],
orderApprovalBackVO:{},
splitIndex:0,
channelData:[],
tradeCityList:[],
multipleSelection:[],
loading:false,
open:false,
form:{
},
importCityList:[],
selectedUsers:[],
shopOpen:false,
quantityshow:false,
shopForm:{},
// 表单校验
rules: {
transportId: [{ required: true, message: this.$t("请选择运输方式"), trigger: "change" }],
warehouseIds: [{ required: true, message: this.$t("请选择目的仓库"), trigger: "change" }],
channelId: [{ required: true, message: this.$t("请选择出货渠道"), trigger: "change" }],
},
// 表单校验
shopRules: {
prodTitleZh: [{ required: true, message: this.$t("请选择中文品名"), trigger: "change" }],
prodTitleEn: [{ required: true, message: this.$t("请选择英文品名"), trigger: "change" }],
},
queryParams:{
orderId:7,
lang:0
},
query:{
page:1,
rows:20
},
splitItemIndex:0,
quantitySum:0
};
},
async created() {
this.getChannel()
getWarehouseList().then(res => {
this.tradeCityList = res.data
this.importCityList = this.tradeCityList.filter(item => item.type == 1)
})
if (this.$route.query.orderId) {
this.queryParams.orderId = this.$route.query.orderId
}
Promise.all([this.getList(), this.getOrder()]).then(res => {
console.log("拆单数据", this.splitData, this.splitData.length)
if(this.orderData.inWarehouseState != 207 && this.splitData.length){
// 2023-05-20确认不需要询问,直接重置
deleteAllSplit(this.queryParams.orderId).then(res => {
this.getList()
})
/*this.$confirm(this.$t('已有拆单数据,是否要重置?')).then(res => {
return deleteAllSplit(this.queryParams.orderId)
}).then(res => {
this.getList()
this.$message.success("重置成功")
})*/
}
})
},
watch: {
//监听table这个对象
tableData: {
// 立即监听
immediate: true,
handler() {
this.$nextTick(() => {
const tds = document.querySelectorAll(
"#table .el-table__footer-wrapper tr>td"
);
// colSpan合并列
tds[1].colSpan = 5;
tds[1].style.textAlign = "left";
tds[2].style.display = "none";
tds[3].style.display = "none";
tds[4].style.display = "none";
tds[5].style.display = "none";
});
},
},
// 关闭放入弹层的时候清理弹层表单内容
shopOpen(show){
if(!show){
this.shopForm = {}
}
}
},
computed:{
getDictData(){
return (type, value) => getDictData(type, value) || {}
},
getDictDatas(){
return getDictDatas
},
// 放入品名试选择的商品项
orderItem(){
if(!this.orderData || !this.shopForm.orderItemId) return {}
return this.orderData.orderItemVOList.find(item => item.orderItemId == this.shopForm.orderItemId) || {}
},
// 主单数据,也就是拆分剩余的数据,可用来限制拆单放入的最大值
mainOrderItem(){
if(!this.orderItem.orderItemId || !this.splitData.length || !this.splitData[0].orderSplitItemBackVOList) return {}
return this.splitData[0].orderSplitItemBackVOList.find(item => item.orderItemId == this.orderItem.orderItemId) || {}
}
},
methods: {
/*检查并提交字段(体积,重量)修改*/
updateField(row, field){
let val = parseFloat(row[field])
if(!val || val < 0){
this.$message.error(this.$t('数据无效'))
return this.getList()
}
splitItemUpdate(row).then(() => {
this.$message.success(this.$t('修改成功'))
}).finally(() => {
this.getList()
})
},
checkCode(data){
if(data.indexOf('+')==-1){
return '+'+data
}
return data
},
changeTransport(e){
this.$set(this.form,'transportId',e)
console.log(this.form.transportId)
this.$forceUpdate()
},
changeDeatWarehouseId(e){
this.$forceUpdate()
this.$set(this.form,'destWarehouseId',e)
console.log(this.form.destWarehouseId)
},
getOrder(){
this.loading = true;
return getOrder(this.queryParams.orderId).then(response => {
this.orderData = response.data
this.query.destWarehouseId = response.data.logisticsInfoDto.startWarehouseId
this.loading = false
});
},
/** 查询列表 */
getList() {
this.loading = true;
// 执行查询
return getSplitList(this.queryParams).then(response => {
this.splitData = response.data.orderSplitBackVOList
this.orderApprovalBackVO = response.data
this.loading = false;
});
},
getChannel(){
getChannelList().then(res=>this.channelData = res.data)
},
changeDest(){
this.query.warehouseIds = this.form.destWarehouseId
},
arraySpanMethod({ row, column, rowIndex, columnIndex }) {
if (rowIndex==this.orderData.orderItemVOList.length) {
if (columnIndex === 1) {
return [2, 3];
} else if (columnIndex > 1) {
return [0, 0];
}
}
},
getSummaries(){
const sums = [];
sums[0] = this.$t('小计')
if(!this.orderData || !this.orderData.orderItemVOList ||this.orderData.length==0){
return sums
}
var orderSum = 0
var orderV = 0
var orderW = 0
var leviteSum = 0
var leviteV = 0
var leviteW = 0
this.orderData.orderItemVOList.forEach((column, index) => {
orderSum += column.num
orderV += column.volume
orderW += column.weight
leviteSum += column.warehouseInInfoVO?column.warehouseInInfoVO.cartonsNum:0
leviteV += column.warehouseInInfoVO?column.warehouseInInfoVO.volume:0
leviteW += column.warehouseInInfoVO?column.warehouseInInfoVO.weight:0
});
sums[1] = this.$t('下单统计')+' '+ orderSum+' '+this.$t('')+' '+ orderV.toFixed(2) +'' + orderW + ' kg ' + ' '+this.$t('入仓统计:')+ leviteSum+' '+this.$t('')+' '+ leviteV.toFixed(2) +'' + leviteW + ' kg'
return sums;
},
importCityName(id){
var arr = this.tradeCityList.filter(item => item.id == id)
return arr.length>0?arr[0].titleZh:this.$t('')
},
submitForm(){
if(this.splitData.length==0){
this.$modal.msgError(this.$t("请先新建拆单"))
return
}
// 判断体积和重量,子单和必须等于父单
// 1.将拆单中的商品项数据汇总保存到orderItem
this.splitData.forEach(item => {
item.orderSplitItemBackVOList.forEach(splitItem => {
let orderItem = this.orderData.orderItemVOList.find(orderItem => orderItem.orderItemId == splitItem.orderItemId)
if(!orderItem.splitSum){
orderItem.splitSum = {
volume: new Decimal(splitItem.volume || 0),
weight: new Decimal(splitItem.weight|| 0)
}
}else{
orderItem.splitSum.volume = orderItem.splitSum.volume.plus(splitItem.volume || 0)
orderItem.splitSum.weight = orderItem.splitSum.weight.plus(splitItem.weight || 0)
}
})
})
// 2. 遍历商品项 对比数据是否符合
let prods = [] // 数据不符合要求的商品
// 挂在到window测试
window.orderData = this.orderData
this.orderData.orderItemVOList.forEach(item => {
// 未入仓的不检查
if(!item.warehouseInInfoVO){
return
}
// 没拆单的不检查
if(!item.splitSum){
// prods.push(this.$l(item, 'prodTitle'))
return
}
if(item.splitSum.volume.toNumber() != item.warehouseInInfoVO.volume || item.splitSum.weight.toNumber() != item.warehouseInInfoVO.weight){
prods.push(this.$l(item, 'prodTitle'))
}
})
if(prods.length){
return this.$alert( this.$t("{prods}等商品拆单总数据跟主单不匹配", {prods: prods.join(',')}))
}
// if(this.selectedUsers.length==0){
// this.$modal.msgError("请选择抄送人")
// return
// }
var params = {
orderId:this.queryParams.orderId,
copyUserId:this.selectedUsers
}
splitApply(params).then(res=>{
this.$modal.msgSuccess(this.$t("申请成功"));
this.$store.dispatch('tagsView/delCurrentView')
})
},
addShop(index){
this.splitItemIndex = index
this.shopOpen = true
},
addSplit(){
this.form.transportId = this.orderData.transportId
this.form.destWarehouseId = this.orderData.destWarehouseId
if(this.orderData.logisticsInfoDto&&this.orderData.logisticsInfoDto.destTitleZh){
this.form.destWarehouseId = this.importCityList.find(item=>item.titleZh==this.orderData.logisticsInfoDto.destTitleZh).id
if(this.orderData.logisticsInfoDto&&this.orderData.logisticsInfoDto.channelId){
this.form.channelId = this.orderData.logisticsInfoDto.channelId
}
}
this.open = true
},
changeProdTitleZh(val){
var list = []
list = this.splitData[0].orderSplitItemBackVOList.filter(item=>item.id == val)
this.shopForm.sum = list[0].num
this.quantitySum = list[0].quantity
this.shopForm.orderItemId = list[0].orderItemId
this.shopForm.prodTitleEn = list[0].prodTitleEn
this.shopForm.prodTitleZh = list[0].prodTitleZh
var orderItemData = this.orderData.orderItemVOList.find(item=>item.orderItemId==this.shopForm.orderItemId)
/*var params = {
'seaFreightVolume':orderItemData.seaFreightVolume,
'clearanceFreightVolume':orderItemData.clearanceFreightVolume
}
console.log(orderItemData)*/
this.numcheck()
},
numcheck(){
quantityRequired(this.orderData.lineId).then(res=>{
this.quantityshow = res.data
})
},
// 输入方数箱数后,按照平均值计算数量和体积重量数据
numChange(){
/*var sum = parseInt(this.quantitySum/this.shopForm.num)
this.$set(this.shopForm,'quantity',sum)*/
let rate = this.shopForm.num/this.mainOrderItem.num
this.$set(this.shopForm, 'quantity', Math.ceil(this.mainOrderItem.quantity * rate))
this.$set(this.shopForm, 'volume', (this.mainOrderItem.volume * rate).toFixed(2))
this.$set(this.shopForm, 'chargeVolume', (this.mainOrderItem.chargeVolume * rate).toFixed(2))
this.$set(this.shopForm, 'weight', (this.mainOrderItem.weight * rate).toFixed(2))
this.$set(this.shopForm, 'chargeWeight', (this.mainOrderItem.chargeWeight * rate).toFixed(2))
this.$set(this.shopForm, 'worth', (this.mainOrderItem.worth * rate).toFixed(2))
},
/*changeProdTitleEn(){
var list = []
list = this.splitData[0].orderSplitItemBackVOList.filter(item=>item.prodTitleEn == this.shopForm.prodTitleEn)
this.shopForm.sum = list[0].num
this.quantitySum = list[0].quantity
this.shopForm.prodTitleZh = list[0].prodTitleZh
},*/
haddleAdd(){
let that = this
if(!that.form.transportId){
that.$message.error(this.$t("请选择运输方式"));
return
}
if(!that.form.destWarehouseId){
that.$message.error(this.$t("请选择目的仓库"));
return
}
// if(!this.form.channelId){
// this.$modal.msgError("请选择出货渠道");
// }
var params = {
dstWarehouseId: that.form.destWarehouseId,
parentOrderId: that.orderData.orderId,
parentOrderNo: that.orderData.orderNo,
transportId: that.form.transportId,
channelId:that.form.channelId
}
createSplit(params).then(res=>{
that.getList()
})
that.open = false
},
cancel(){
this.open = false
this.form = {}
},
shopAdd(){
this.$refs["shopForm"].validate(valid => {
if (!valid) {
return;
}
})
var params = {
num:this.shopForm.num,
orderItemId:this.shopForm.orderItemId,
orderSplitId:this.splitData[this.splitItemIndex].id,
remark:this.shopForm.remark,
volume: this.shopForm.volume,
chargeVolume: this.shopForm.chargeVolume,
weight: this.shopForm.weight,
chargeWeight: this.shopForm.chargeWeight,
worth: this.shopForm.worth
}
if(this.quantityshow){
params.quantity = this.shopForm.quantity
}
createSplitItem(params).then(res=>{
this.$message.success(this.$t("放入成功"));
this.getList()
this.shopForm = {}
})
this.shopOpen = false
},
removeShop(id){
let that = this
that.$confirm(that.$t('是否移除货物吗?')).then(function () {
deleteSplitItem(id).then(res=>{
that.$message.success(that.$t("移除成功"));
that.getList()
})
})
},
cancelSplit(){
let that = this
if(!that.reason){
that.$message.error(that.$t("请输入取消原因"));
return
}
cancelApply({orderId:that.queryParams.orderId,reason:that.reason}).then(res=>{
that.$message.success(that.$t("取消成功"));
that.$store.dispatch('tagsView/delCurrentView')
})
},
shopCancel(){
this.shopOpen = false
this.shopForm = {}
},
/** 删除按钮操作 */
deleteSplit(id) {
let that = this
that.$confirm(that.$t('是否确认删除新拆的订单吗?')).then(function () {
deleteSplit(id).then(res=>{
that.$message.success(that.$t("删除成功"));
that.getList()
})
})
},
}
}
</script>
<style scoped>
.card-title{
font-size: 18px;
font-weight: bold;
margin-top: 10px;
}
.card-info{
font-size: 16px;
}
.card{
margin-top: 20px;
}
.btn-header{
width: 90%;
display: flex;
align-items: center;
justify-content: space-between;
margin: 20px 0;
}
.red{
color:#ff3430;
font-size: 15px;
}
.footer_btn{
padding-bottom: 60px;
}
.cancel_notice{
font-size: 16px;
font-weight: 600;
}
.cancel_content{
display: flex;
align-items: center;
padding-top: 20px;
}
.cancel_content span{
width: 100px;
}
</style>
...@@ -2,60 +2,60 @@ ...@@ -2,60 +2,60 @@
<div class="app-container"> <div class="app-container">
<!-- 搜索工作栏 --> <!-- 搜索工作栏 -->
<el-card> <el-card>
<div slot="header" class="card-title">{{$t('拆单申请')}}-{{orderData.orderNo||''}}</div> <div slot="header" class="card-title">{{$t('拆单申请')}}-{{orderData.orderNo||''}}</div>
<div class="btn-header"> <div class="btn-header">
<span class="card-title">{{$t('原单信息')}}</span> <span class="card-title">{{$t('原单信息')}}</span>
</div> </div>
<el-descriptions :column="4"> <el-descriptions :column="4">
<el-descriptions-item :label="$t('唛头')"> <el-descriptions-item :label="$t('唛头')">
{{orderData.marks?orderData.marks:$t('')}} {{orderData.marks?orderData.marks:$t('')}}
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item :label="$t('已到箱数/总箱数')"> <el-descriptions-item :label="$t('已到箱数/总箱数')">
<span>{{orderData.sumNum||0}}/{{orderData.costVO?orderData.costVO.totalNum:0}}</span> <span>{{orderData.sumNum||0}}/{{orderData.costVO?orderData.costVO.totalNum:0}}</span>
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item :label="$t('订单状态')"> <el-descriptions-item :label="$t('订单状态')">
<!-- <dict-tag :type="DICT_TYPE.ORDER_STATUS" :value="orderData.status" /> --> <!-- <dict-tag :type="DICT_TYPE.ORDER_STATUS" :value="orderData.status" /> -->
{{orderData.abnormalState!=0?$t('异常'):$t('正常')}} {{orderData.abnormalState!=0?$t('异常'):$t('正常')}}
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item :label="$t('送货日期')"> <el-descriptions-item :label="$t('送货日期')">
{{orderData.deliveryDate||$t('')}} {{orderData.deliveryDate||$t('')}}
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item :label="$t('运输方式')"> <el-descriptions-item :label="$t('运输方式')">
<dict-tag :type="DICT_TYPE.ECW_TRANSPORT_TYPE" :value="orderData.transportId" /> <dict-tag :type="DICT_TYPE.ECW_TRANSPORT_TYPE" :value="orderData.transportId" />
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item :label="$t('始发地')" > <el-descriptions-item :label="$t('始发地')" >
<template v-if="orderData.logisticsInfoDto"> <template v-if="orderData.logisticsInfoDto">
{{$l(orderData.logisticsInfoDto, 'startTitle')}} {{$l(orderData.logisticsInfoDto, 'startTitle')}}
</template> </template>
<template v-else>{{$t('')}}</template> <template v-else>{{$t('')}}</template>
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item :label="$t('目的地')" :span="2"> <el-descriptions-item :label="$t('目的地')" :span="2">
<template v-if="orderData.logisticsInfoDto"> <template v-if="orderData.logisticsInfoDto">
{{$l(orderData.logisticsInfoDto, 'destTitle')}} {{$l(orderData.logisticsInfoDto, 'destTitle')}}
</template> </template>
<template v-else>{{$t('')}}</template> <template v-else>{{$t('')}}</template>
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item :label="$t('发货人姓名')"> <el-descriptions-item :label="$t('发货人姓名')">
{{orderData.consignorVO?orderData.consignorVO.name||$t('无'):$t('无')}} {{orderData.consignorVO?orderData.consignorVO.name||$t('无'):$t('无')}}
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item :label="$t('发货公司')"> <el-descriptions-item :label="$t('发货公司')">
{{orderData.consignorVO?orderData.consignorVO.company||$t('无'):$t('无')}} {{orderData.consignorVO?orderData.consignorVO.company||$t('无'):$t('无')}}
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item :label="$t('发货电话')"> <el-descriptions-item :label="$t('发货电话')">
{{!orderData.consignorVO?$t('无'):!orderData.consignorVO.phone?$t('无'):(checkCode(orderData.consignorVO.countryCode)+orderData.consignorVO.phone)}} {{!orderData.consignorVO?$t('无'):!orderData.consignorVO.phone?$t('无'):(checkCode(orderData.consignorVO.countryCode)+orderData.consignorVO.phone)}}
</el-descriptions-item> </el-descriptions-item>
</el-descriptions> </el-descriptions>
<el-descriptions :column="4"> <el-descriptions :column="4">
<el-descriptions-item :label="$t('收货人姓名')"> <el-descriptions-item :label="$t('收货人姓名')">
{{orderData.consigneeVO?orderData.consigneeVO.name||$t('无'):$t('无')}} {{orderData.consigneeVO?orderData.consigneeVO.name||$t('无'):$t('无')}}
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item :label="$t('收货公司')"> <el-descriptions-item :label="$t('收货公司')">
{{orderData.consigneeVO?orderData.consigneeVO.company||$t('无'):$t('无')}} {{orderData.consigneeVO?orderData.consigneeVO.company||$t('无'):$t('无')}}
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item :label="$t('收货电话')"> <el-descriptions-item :label="$t('收货电话')">
{{!orderData.consigneeVO?$t('无'):!orderData.consigneeVO.phone?$t('无'):(checkCode(orderData.consigneeVO.countryCode)+orderData.consigneeVO.phone)}} {{!orderData.consigneeVO?$t('无'):!orderData.consigneeVO.phone?$t('无'):(checkCode(orderData.consigneeVO.countryCode)+orderData.consigneeVO.phone)}}
</el-descriptions-item> </el-descriptions-item>
</el-descriptions> </el-descriptions>
</el-card> </el-card>
<el-card class="card"> <el-card class="card">
...@@ -64,62 +64,62 @@ ...@@ -64,62 +64,62 @@
<el-table id='table' v-loading="loading" border :data="orderData.orderItemVOList" :summary-method="getSummaries" show-summary> <el-table id='table' v-loading="loading" border :data="orderData.orderItemVOList" :summary-method="getSummaries" show-summary>
<el-table-column :label="$t('序号')" align="center" prop="id" type="index" width="60"> <el-table-column :label="$t('序号')" align="center" prop="id" type="index" width="60">
<template slot-scope="scope" > <template slot-scope="scope" >
<span>{{scope.$index + 1}}</span> <span>{{scope.$index + 1}}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('品名')" align="center"> <el-table-column :label="$t('品名')" align="center">
<template slot-scope="scope"> <template slot-scope="scope">
<el-row>{{scope.row.prodTitleEn}}</el-row> <el-row>{{scope.row.prodTitleEn}}</el-row>
<el-row>{{scope.row.prodTitleZh}}</el-row> <el-row>{{scope.row.prodTitleZh}}</el-row>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('填单货物属性')" align="center" width="200"> <el-table-column :label="$t('填单货物属性')" align="center" width="200">
<template slot-scope="scope"> <template slot-scope="scope">
<el-row> <el-row>
<span>{{$t('品牌')}} <span>{{$t('品牌')}}
<dict-tag :type="DICT_TYPE.ECW_IS_BRAND" :value="scope.row.brandType" /> <dict-tag :type="DICT_TYPE.ECW_IS_BRAND" :value="scope.row.brandType" />
</span> </span>
</el-row> </el-row>
<el-row> <el-row>
<span>{{$t('箱数')}}{{scope.row.num||$t('未填')}}</span> <span>{{$t('箱数')}}{{scope.row.num||$t('未填')}}</span>
</el-row> </el-row>
<el-row> <el-row>
<span>{{$t('体积')}}{{scope.row.volume||$t('未填')}}</span> <span>{{$t('体积')}}{{scope.row.volume||$t('未填')}}</span>
</el-row> </el-row>
<el-row> <el-row>
<span>{{$t('重量')}}{{scope.row.weight||$t('未填')}}kg</span> <span>{{$t('重量')}}{{scope.row.weight||$t('未填')}}kg</span>
</el-row> </el-row>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('入库货物属性')" align="center" width="400"> <el-table-column :label="$t('入库货物属性')" align="center" width="400">
<template slot-scope="scope"> <template slot-scope="scope">
<el-row v-if="scope.row.warehouseInInfoVO"> <el-row v-if="scope.row.warehouseInInfoVO">
<span>{{$t('规格')}}{{scope.row.warehouseInInfoVO?scope.row.warehouseInInfoVO.boxGauge:0}}</span> <span>{{$t('规格')}}{{scope.row.warehouseInInfoVO?scope.row.warehouseInInfoVO.boxGauge:0}}</span>
</el-row> </el-row>
<el-row v-if="scope.row.warehouseInInfoVO"> <el-row v-if="scope.row.warehouseInInfoVO">
<span>{{$t('品牌')}} <span>{{$t('品牌')}}
<template v-if="scope.row.brandName">{{scope.row.brandName}}</template> <template v-if="scope.row.brandName">{{scope.row.brandName}}</template>
<dict-tag v-else :type="DICT_TYPE.ECW_IS_BRAND" :value="scope.row.feeType" /> <dict-tag v-else :type="DICT_TYPE.ECW_IS_BRAND" :value="scope.row.feeType" />
</span> </span>
<span style="margin-left: 10px;">{{$t('箱数')}}:{{!scope.row.warehouseInInfoVO?0:scope.row.warehouseInInfoVO.cartonsNum}}</span> <span style="margin-left: 10px;">{{$t('箱数')}}:{{!scope.row.warehouseInInfoVO?0:scope.row.warehouseInInfoVO.cartonsNum}}</span>
<span style="margin-left: 10px;">{{$t('体积')}}:{{!scope.row.warehouseInInfoVO?0:scope.row.warehouseInInfoVO.volume}}m³</span> <span style="margin-left: 10px;">{{$t('体积')}}:{{!scope.row.warehouseInInfoVO?0:scope.row.warehouseInInfoVO.volume}}m³</span>
<span style="margin-left: 10px;">{{$t('重量')}}:{{!scope.row.warehouseInInfoVO?0:scope.row.warehouseInInfoVO.weight}}kg</span> <span style="margin-left: 10px;">{{$t('重量')}}:{{!scope.row.warehouseInInfoVO?0:scope.row.warehouseInInfoVO.weight}}kg</span>
<span style="margin-left: 10px;">{{$t('数量(个)')}}:{{!scope.row.warehouseInInfoVO?0:scope.row.warehouseInInfoVO.quantityAll}}</span> <span style="margin-left: 10px;">{{$t('数量(个)')}}:{{!scope.row.warehouseInInfoVO?0:scope.row.warehouseInInfoVO.quantityAll}}</span>
</el-row> </el-row>
<el-row v-if="!scope.row.warehouseInInfoVO"> <el-row v-if="!scope.row.warehouseInInfoVO">
<span>{{$t('暂时没有入仓信息')}}</span> <span>{{$t('暂时没有入仓信息')}}</span>
</el-row> </el-row>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('最后操作时间')" align="center"> <el-table-column :label="$t('最后操作时间')" align="center">
<template slot-scope="scope"> <template slot-scope="scope">
<span>{{parseTime(scope.row.updateTime)}}</span> <span>{{parseTime(scope.row.updateTime)}}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('状态')" align="center"> <el-table-column :label="$t('状态')" align="center">
<template slot-scope="scope"> <template slot-scope="scope">
<!-- {{orderData.abnormalState!=0?$t('异常'):$t('正常')}} --> <!-- {{orderData.abnormalState!=0?$t('异常'):$t('正常')}} -->
<dict-tag :type="DICT_TYPE.ORDER_ITEM_STATUS" :value="scope.row.itemStatus" /> <dict-tag :type="DICT_TYPE.ORDER_ITEM_STATUS" :value="scope.row.itemStatus" />
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
...@@ -153,7 +153,7 @@ ...@@ -153,7 +153,7 @@
<el-table v-if="item.orderSplitItemBackVOList" border :data="item.orderSplitItemBackVOList"> <el-table v-if="item.orderSplitItemBackVOList" border :data="item.orderSplitItemBackVOList">
<el-table-column :label="$t('序号')" align="center" prop="id" type="index"> <el-table-column :label="$t('序号')" align="center" prop="id" type="index">
<template slot-scope="scope"> <template slot-scope="scope">
<span>{{scope.$index + 1}}</span> <span>{{scope.$index + 1}}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('中文名')" align="center" prop="prodTitleZh" /> <el-table-column :label="$t('中文名')" align="center" prop="prodTitleZh" />
...@@ -182,7 +182,7 @@ ...@@ -182,7 +182,7 @@
<template slot-scope="scope"> <template slot-scope="scope">
{{scope.row.weight}}kg {{scope.row.weight}}kg
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('收费重量')" align="center"> <el-table-column :label="$t('收费重量')" align="center">
<template slot-scope="scope"> <template slot-scope="scope">
{{scope.row.chargeWeight}}kg {{scope.row.chargeWeight}}kg
...@@ -209,7 +209,7 @@ ...@@ -209,7 +209,7 @@
<el-table-column :label="$t('数量(个)')" align="center" prop="quantity"></el-table-column> <el-table-column :label="$t('数量(个)')" align="center" prop="quantity"></el-table-column>
<el-table-column :label="$t('操作')" align="center"> <el-table-column :label="$t('操作')" align="center">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button size="mini" type="text" icon="el-icon-delete" @click="removeShop(scope.row.id)">{{$t('移出')}}</el-button> <el-button size="mini" type="text" icon="el-icon-delete" @click="removeShop(scope.row.id)">{{$t('移出')}}</el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
...@@ -219,34 +219,34 @@ ...@@ -219,34 +219,34 @@
</el-card> </el-card>
<work-flow xmlkey="split_order" v-model="selectedUsers"></work-flow> <work-flow xmlkey="split_order" v-model="selectedUsers"></work-flow>
<div slot="footer" class="card footer_btn" v-if="orderData.abnormalState==0"> <div slot="footer" class="card footer_btn" v-if="orderData.abnormalState==0">
<template v-if="orderData.inWarehouseState!=207"> <template v-if="orderData.inWarehouseState!=207">
<el-button type="primary" @click="submitForm">{{$t('提交申请')}}</el-button> <el-button type="primary" @click="submitForm">{{$t('提交申请')}}</el-button>
<el-button plain type="primary" @click="cancel">{{$t('取消')}}</el-button> <el-button plain type="primary" @click="cancel">{{$t('取消')}}</el-button>
<el-button type="primary" @click="reset">{{$t('重置')}}</el-button> <el-button type="primary" @click="reset">{{$t('重置')}}</el-button>
</template> </template>
<template v-else> <template v-else>
<el-button type="primary" @click="$router.push(`/bpm/process-instance/detail?id=`+orderApprovalBackVO.applyingFormId)">{{$t('审核中')}}</el-button> <el-button type="primary" @click="$router.push(`/bpm/process-instance/detail?id=`+orderApprovalBackVO.applyingFormId)">{{$t('审核中')}}</el-button>
<el-button plain type="primary" @click="dialogVisible = true">{{$t('取消审核')}}</el-button> <el-button plain type="primary" @click="dialogVisible = true">{{$t('取消审核')}}</el-button>
<el-button plain type="primary" @click="$store.dispatch('tagsView/delCurrentView')">{{$t('返回')}}</el-button> <el-button plain type="primary" @click="$store.dispatch('tagsView/delCurrentView')">{{$t('返回')}}</el-button>
</template> </template>
</div> </div>
<!-- 对话框(添加 / 修改) --> <!-- 对话框(添加 / 修改) -->
<el-dialog :title="$t('新建拆单')" :visible.sync="open" width="400px" append-to-body> <el-dialog :title="$t('新建拆单')" :visible.sync="open" width="400px" append-to-body>
<el-form ref="formSplit" :model="form" :rules="rules" label-width="80px"> <el-form ref="formSplit" :model="form" :rules="rules" label-width="80px">
<el-form-item :label="$t('运输方式')"> <el-form-item :label="$t('运输方式')">
<dict-selector :clearable="true" :type="DICT_TYPE.ECW_TRANSPORT_TYPE" @change="changeTransport" v-model="form.transportId" /> <dict-selector :clearable="true" :type="DICT_TYPE.ECW_TRANSPORT_TYPE" @change="changeTransport" v-model="form.transportId" />
</el-form-item> </el-form-item>
<el-form-item :label="$t('出货渠道')" v-if="getDictData(DICT_TYPE.ECW_TRANSPORT_TYPE, form.transportId).cssClass == 'channel'"> <el-form-item :label="$t('出货渠道')" v-if="getDictData(DICT_TYPE.ECW_TRANSPORT_TYPE, form.transportId).cssClass == 'channel'">
<el-select v-model="form.channelId" :placeholder="$t('请选择出货渠道')" :clearable="true"> <el-select v-model="form.channelId" :placeholder="$t('请选择出货渠道')" :clearable="true">
<el-option :disabled="getDictData(DICT_TYPE.ECW_TRANSPORT_TYPE, form.transportId).cssClass != 'channel'" v-for="item in channelData" :key="item.channelId" :label="$l(item, 'name')" :value="item.channelId"/> <el-option :disabled="getDictData(DICT_TYPE.ECW_TRANSPORT_TYPE, form.transportId).cssClass != 'channel'" v-for="item in channelData" :key="item.channelId" :label="$l(item, 'name')" :value="item.channelId"/>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item :label="$t('目的仓库')" > <el-form-item :label="$t('目的仓库')" >
<el-select v-model="form.destWarehouseId" @change="changeDeatWarehouseId" :placeholder="$t('请选择目的仓库')" :clearable="true"> <el-select v-model="form.destWarehouseId" @change="changeDeatWarehouseId" :placeholder="$t('请选择目的仓库')" :clearable="true">
<el-option v-for="items in importCityList" :label="$l(items, 'title')" :value="items.id" :key="items.id" ></el-option> <el-option v-for="items in importCityList" :label="$l(items, 'title')" :value="items.id" :key="items.id" ></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-form> </el-form>
<div slot="footer" class="dialog-footer"> <div slot="footer" class="dialog-footer">
...@@ -256,194 +256,194 @@ ...@@ -256,194 +256,194 @@
</el-dialog> </el-dialog>
<!-- 对话框(添加 / 修改) --> <!-- 对话框(添加 / 修改) -->
<el-dialog :title="$t('放入品名')" :visible.sync="shopOpen" width="1500px" append-to-body> <el-dialog :title="$t('放入品名')" :visible.sync="shopOpen" width="1500px" append-to-body>
<el-form ref="shopForm" :model="shopForm" :rules="shopRules" label-width="120px" inline> <el-form ref="shopForm" :model="shopForm" :rules="shopRules" label-width="120px" inline>
<el-form-item :label="$t('中文品名')"> <el-form-item :label="$t('中文品名')">
<el-select v-model="shopForm.orderItemId" :placeholder="$t('请选择中文品名')"> <el-select v-model="shopForm.orderItemId" :placeholder="$t('请选择中文品名')">
<el-option v-for="item in orderData.orderItemVOList" :label="item.prodTitleZh" :value="item.orderItemId" :key="item.orderItemId" ></el-option> <el-option v-for="item in orderData.orderItemVOList" :label="item.prodTitleZh" :value="item.orderItemId" :key="item.orderItemId" ></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item :label="$t('英文品名')"> <el-form-item :label="$t('英文品名')">
<el-select v-model="shopForm.orderItemId" :placeholder="$t('请选择英文品名')"> <el-select v-model="shopForm.orderItemId" :placeholder="$t('请选择英文品名')">
<el-option v-for="item in orderData.orderItemVOList" :label="item.prodTitleEn" :value="item.orderItemId" :key="item.orderItemId" ></el-option> <el-option v-for="item in orderData.orderItemVOList" :label="item.prodTitleEn" :value="item.orderItemId" :key="item.orderItemId" ></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-card> <el-card>
<div slot="header" class="page-title">{{$t('品名可拆数据')}}</div> <div slot="header" class="page-title">{{$t('品名可拆数据')}}</div>
<div class="pl-20"> <div class="pl-20">
<span class="mr-10">{{$t('箱数')}}:{{ leftData.num || 0 }}</span> <span class="mr-10">{{$t('箱数')}}:{{ leftData.num || 0 }}</span>
<span class="mr-10">{{ $t('入仓方数') }}:{{ leftData.volume || 0 }}m³</span> <span class="mr-10">{{ $t('入仓方数') }}:{{ leftData.volume || 0 }}m³</span>
<span class="mr-10">{{ $t('收费方数') }}:{{ leftData.chargeVolume || 0 }}m³</span> <span class="mr-10">{{ $t('收费方数') }}:{{ leftData.chargeVolume || 0 }}m³</span>
<span class="mr-10">{{ $t('入仓重量') }}:{{ leftData.weight || 0 }}kg</span> <span class="mr-10">{{ $t('入仓重量') }}:{{ leftData.weight || 0 }}kg</span>
<span class="mr-10">{{ $t('收费重量') }}:{{ leftData.chargeWeight || 0 }}kg</span> <span class="mr-10">{{ $t('收费重量') }}:{{ leftData.chargeWeight || 0 }}kg</span>
<span class="mr-10">{{ $t('数量(个)') }}:{{ leftData.quantity || 0 }}</span> <span class="mr-10">{{ $t('数量(个)') }}:{{ leftData.quantity || 0 }}</span>
<span class="mr-10" v-if="orderLeftData">{{ $t('剩余订单货值') }}:{{ orderLeftData.splitResidueWorth || 0 }}{{ $t('元') }}</span> <span class="mr-10" v-if="orderLeftData">{{ $t('剩余订单货值') }}:{{ orderLeftData.splitResidueWorth || 0 }}{{ $t('元') }}</span>
</div> </div>
</el-card> </el-card>
<el-card class="mt-10"> <el-card class="mt-10">
<div slot="header" class="page-title">{{$t('可拆入仓记录')}}</div> <div slot="header" class="page-title">{{$t('可拆入仓记录')}}</div>
<el-table <el-table
:data="getOrderItemWarehouseIn(shopForm.orderItemId)" :data="getOrderItemWarehouseIn(shopForm.orderItemId)"
style="width: 100%"> style="width: 100%">
<el-table-column :label="$t('箱数')"> <el-table-column :label="$t('箱数')">
<template v-slot="{row,$index}"> <template v-slot="{row,$index}">
<!--{{row.cartonsNum}}--> <!--{{row.cartonsNum}}-->
{{getWarehouseLeftData(row, 'num')}} {{getWarehouseLeftData(row, 'num')}}
<dict-tag :type="DICT_TYPE.WAREHOUSING_SPECIFICATION_TYPE" v-model="row.specificationType"></dict-tag> <dict-tag :type="DICT_TYPE.WAREHOUSING_SPECIFICATION_TYPE" v-model="row.specificationType"></dict-tag>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('包装类型')"> <el-table-column :label="$t('包装类型')">
<template v-slot="{row,$index}"> <template v-slot="{row,$index}">
<dict-tag :type="DICT_TYPE.ECW_PACKAGING_TYPE" v-model="row.unit"></dict-tag> <dict-tag :type="DICT_TYPE.ECW_PACKAGING_TYPE" v-model="row.unit"></dict-tag>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="长(cm)"> <el-table-column label="长(cm)">
<template v-slot="{row,$index}"> <template v-slot="{row,$index}">
{{row.boxGauge1}} {{row.boxGauge1}}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="宽(cm)"> <el-table-column label="宽(cm)">
<template v-slot="{row,$index}"> <template v-slot="{row,$index}">
{{ row.boxGauge2 }} {{ row.boxGauge2 }}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="高(cm)"> <el-table-column label="高(cm)">
<template v-slot="{row,$index}"> <template v-slot="{row,$index}">
{{ row.boxGauge3 }} {{ row.boxGauge3 }}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="入仓体积(m³)"> <el-table-column label="入仓体积(m³)">
<template v-slot="{row,$index}"> <template v-slot="{row,$index}">
{{getWarehouseLeftData(row, 'volume')}} {{getWarehouseLeftData(row, 'volume')}}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="入仓重量(Kg)" prop="weight"> <el-table-column label="入仓重量(Kg)" prop="weight">
<template v-slot="{row,$index}"> <template v-slot="{row,$index}">
{{getWarehouseLeftData(row, 'weight')}} {{getWarehouseLeftData(row, 'weight')}}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('数量')" prop="quantity"> <el-table-column :label="$t('数量')" prop="quantity">
<template v-slot="{row,$index}"> <template v-slot="{row,$index}">
{{getWarehouseLeftData(row, 'quantity')}} {{getWarehouseLeftData(row, 'quantity')}}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('快递单号')" prop="expressNo"></el-table-column> <el-table-column :label="$t('快递单号')" prop="expressNo"></el-table-column>
<el-table-column :label="$t('储位')" prop="orderLocationBackVOList"> <el-table-column :label="$t('储位')" prop="orderLocationBackVOList">
<template v-slot="{ row, column, $index }"> <template v-slot="{ row, column, $index }">
{{getLocationName(row.orderLocationBackVOList)}} {{getLocationName(row.orderLocationBackVOList)}}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('操作')"> <el-table-column :label="$t('操作')">
<template v-slot="{ row, column, $index}"> <template v-slot="{ row, column, $index}">
<el-tag v-if="getWarehouseInSplitData(row.id,'num') >= row.cartonsNum" disabled size="mini" type="primary" >{{$t('已拆完')}}</el-tag> <el-tag v-if="getWarehouseInSplitData(row.id,'num') >= row.cartonsNum" disabled size="mini" type="primary" >{{$t('已拆完')}}</el-tag>
<el-button v-else size="mini" type="primary" @click="putInRecord(row)">放入</el-button> <el-button v-else size="mini" type="primary" @click="putInRecord(row)">放入</el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
</el-card> </el-card>
<el-card class="mt-10"> <el-card class="mt-10">
<div slot="header" class="flex-between mt-20 mb-10"> <div slot="header" class="flex-between mt-20 mb-10">
<div class="page-title" style="margin: 0"> <div class="page-title" style="margin: 0">
{{$t('已放入入仓记录')}} {{$t('已放入入仓记录')}}
</div> </div>
<el-button type="danger" size="mini" @click="clearAll">清空放入数据</el-button> <el-button type="danger" size="mini" @click="clearAll">清空放入数据</el-button>
</div> </div>
<el-table <el-table
:data="shopForm.specsRecordVOList" :data="shopForm.specsRecordVOList"
style="width: 100%"> style="width: 100%">
<el-table-column :label="$t('箱数')" width="200px"> <el-table-column :label="$t('箱数')" width="200px">
<template v-slot="{row,$index}"> <template v-slot="{row,$index}">
{{row.num}} {{row.num}}
<dict-tag :type="DICT_TYPE.WAREHOUSING_SPECIFICATION_TYPE" v-model="row.specificationType"></dict-tag> <dict-tag :type="DICT_TYPE.WAREHOUSING_SPECIFICATION_TYPE" v-model="row.specificationType"></dict-tag>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('包装类型')" width="100px"> <el-table-column :label="$t('包装类型')" width="100px">
<template v-slot="{row,$index}"> <template v-slot="{row,$index}">
<dict-tag :type="DICT_TYPE.ECW_PACKAGING_TYPE" v-model="row.unit"></dict-tag> <dict-tag :type="DICT_TYPE.ECW_PACKAGING_TYPE" v-model="row.unit"></dict-tag>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="长(cm)"> <el-table-column label="长(cm)">
<template v-slot="{row,$index}"> <template v-slot="{row,$index}">
{{row.boxGauge1}} {{row.boxGauge1}}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="宽(cm)"> <el-table-column label="宽(cm)">
<template v-slot="{row,$index}"> <template v-slot="{row,$index}">
{{ row.boxGauge2 }} {{ row.boxGauge2 }}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="高(cm)"> <el-table-column label="高(cm)">
<template v-slot="{row,$index}"> <template v-slot="{row,$index}">
{{ row.boxGauge3 }} {{ row.boxGauge3 }}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="入仓体积(m³)"> <el-table-column label="入仓体积(m³)">
<template v-slot="{row,$index}"> <template v-slot="{row,$index}">
{{row.volume}} {{row.volume}}
</template> </template>
</el-table-column> </el-table-column>
<!--<el-table-column label="收费体积(m³)" prop="chargeVolume"></el-table-column>--> <!--<el-table-column label="收费体积(m³)" prop="chargeVolume"></el-table-column>-->
<el-table-column label="入仓重量(Kg)" prop="weight"></el-table-column> <el-table-column label="入仓重量(Kg)" prop="weight"></el-table-column>
<!--<el-table-column label="收费重量(Kg)" prop="chargeWeight"></el-table-column>--> <!--<el-table-column label="收费重量(Kg)" prop="chargeWeight"></el-table-column>-->
<el-table-column :label="$t('数量')" width="130px" prop="quantity"></el-table-column> <el-table-column :label="$t('数量')" width="130px" prop="quantity"></el-table-column>
<el-table-column :label="$t('快递单号')" prop="expressNo"></el-table-column> <el-table-column :label="$t('快递单号')" prop="expressNo"></el-table-column>
<el-table-column :label="$t('储位')" prop="orderLocationBackVOList"> <el-table-column :label="$t('储位')" prop="orderLocationBackVOList">
<template v-slot="{ row, column, $index }"> <template v-slot="{ row, column, $index }">
{{getLocationName(row.orderLocationList)}} {{getLocationName(row.orderLocationList)}}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('操作')"> <el-table-column :label="$t('操作')">
<template v-slot="{ row, column, $index}"> <template v-slot="{ row, column, $index}">
<el-button size="mini" type="primary" @click="deleteRow($index)">删除</el-button> <el-button size="mini" type="primary" @click="deleteRow($index)">删除</el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
</el-card> </el-card>
<el-card class="mt-10"> <el-card class="mt-10">
<div slot="header" class="page-title">放入数据</div> <div slot="header" class="page-title">放入数据</div>
<div> <div>
<div class="pl-20 mb-10"> <div class="pl-20 mb-10">
<span class="mr-10">{{$t('箱数')}}:{{ putin.num || 0 }},</span> <span class="mr-10">{{$t('箱数')}}:{{ putin.num || 0 }},</span>
<span class="mr-10">{{ $t('数量(个)') }}:{{ putin.quantity || 0 }},</span> <span class="mr-10">{{ $t('数量(个)') }}:{{ putin.quantity || 0 }},</span>
<span class="mr-10">{{ $t('入仓方数') }}:{{ putin.volume || 0 }}m³, </span> <span class="mr-10">{{ $t('入仓方数') }}:{{ putin.volume || 0 }}m³, </span>
<span class="mr-10">{{ $t('入仓重量') }}:{{ putin.weight || 0 }}kg</span> <span class="mr-10">{{ $t('入仓重量') }}:{{ putin.weight || 0 }}kg</span>
</div> </div>
<el-form-item :label="$t('收费方数')" prop="chargeVolume"> <el-form-item :label="$t('收费方数')" prop="chargeVolume">
<el-input-number v-model="shopForm.chargeVolume" controls-position="right"></el-input-number> <el-input-number v-model="shopForm.chargeVolume" controls-position="right"></el-input-number>
</el-form-item> </el-form-item>
<el-form-item :label="$t('收费重量')" prop="chargeWeight"> <el-form-item :label="$t('收费重量')" prop="chargeWeight">
<el-input-number v-model="shopForm.chargeWeight" controls-position="right"></el-input-number>kg <el-input-number v-model="shopForm.chargeWeight" controls-position="right"></el-input-number>kg
</el-form-item> </el-form-item>
<el-form-item :label="$t('放入货值')" v-if="orderData.costVO"> <el-form-item :label="$t('放入货值')" v-if="orderData.costVO">
<el-input-number v-model="shopForm.worth" controls-position="right" :min="0" :max="orderData.costVO.totalWorth"> <el-input-number v-model="shopForm.worth" controls-position="right" :min="0" :max="orderData.costVO.totalWorth">
<template slot="append">{{ $t('') }}</template> <template slot="append">{{ $t('') }}</template>
</el-input-number> </el-input-number>
</el-form-item> </el-form-item>
<el-form-item :label="$t('备注信息')"> <el-form-item :label="$t('备注信息')">
<el-input v-model="shopForm.remark"></el-input> <el-input v-model="shopForm.remark"></el-input>
</el-form-item> </el-form-item>
</div> </div>
</el-card> </el-card>
</el-form> </el-form>
<div slot="footer" class="dialog-footer"> <div slot="footer" class="dialog-footer">
<el-button type="primary" @click="shopAdd" :disabled="!shopForm.specsRecordVOList || !shopForm.specsRecordVOList.length">{{$t('确定')}}</el-button> <el-button type="primary" @click="shopAdd" :disabled="!shopForm.specsRecordVOList || !shopForm.specsRecordVOList.length">{{$t('确定')}}</el-button>
<el-button @click="shopCancel">{{$t('取消')}}</el-button> <el-button @click="shopCancel">{{$t('取消')}}</el-button>
</div> </div>
</el-dialog> </el-dialog>
<el-dialog <el-dialog
:title="$t('提示')" :title="$t('提示')"
:visible.sync="dialogVisible" :visible.sync="dialogVisible"
width="30%"> width="30%">
<span class="cancel_notice">{{$t('拆单申请正在审核中,你确定取消拆单申请吗?')}}</span> <span class="cancel_notice">{{$t('拆单申请正在审核中,你确定取消拆单申请吗?')}}</span>
<div class="cancel_content"> <div class="cancel_content">
<span>{{$t('取消原因:')}}</span> <span>{{$t('取消原因:')}}</span>
<el-input v-model="reason" :placeholder="$t('请输入取消原因')"></el-input> <el-input v-model="reason" :placeholder="$t('请输入取消原因')"></el-input>
</div> </div>
<span slot="footer" class="dialog-footer"> <span slot="footer" class="dialog-footer">
<el-button @click="dialogVisible = false">{{$t('取消')}}</el-button> <el-button @click="dialogVisible = false">{{$t('取消')}}</el-button>
<el-button type="primary" @click="cancelSplit">{{$t('确定')}}</el-button> <el-button type="primary" @click="cancelSplit">{{$t('确定')}}</el-button>
</span> </span>
...@@ -613,12 +613,12 @@ export default { ...@@ -613,12 +613,12 @@ export default {
}, },
// 关闭放入弹层的时候清理弹层表单内容 // 关闭放入弹层的时候清理弹层表单内容
shopOpen(show){ shopOpen(show){
if(!show){ if(!show){
this.shopForm = {} this.shopForm = {}
}else{ }else{
// 打开弹层查询剩余数据 // 打开弹层查询剩余数据
this.getOrderLeftData() this.getOrderLeftData()
} }
}, },
// 切换品名需要重置已放入的记录 // 切换品名需要重置已放入的记录
'shopForm.orderItemId'(){ 'shopForm.orderItemId'(){
...@@ -654,10 +654,10 @@ export default { ...@@ -654,10 +654,10 @@ export default {
}, },
computed:{ computed:{
getDictData(){ getDictData(){
return (type, value) => getDictData(type, value) || {} return (type, value) => getDictData(type, value) || {}
}, },
getDictDatas(){ getDictDatas(){
return getDictDatas return getDictDatas
}, },
// 放入品名试选择的商品项 // 放入品名试选择的商品项
orderItem(){ orderItem(){
...@@ -835,7 +835,7 @@ export default { ...@@ -835,7 +835,7 @@ export default {
}, },
checkCode(data){ checkCode(data){
if(data.indexOf('+')==-1){ if(data.indexOf('+')==-1){
return '+'+data return '+'+data
} }
return data return data
}, },
...@@ -898,12 +898,12 @@ export default { ...@@ -898,12 +898,12 @@ export default {
var leviteV = 0 var leviteV = 0
var leviteW = 0 var leviteW = 0
this.orderData.orderItemVOList.forEach((column, index) => { this.orderData.orderItemVOList.forEach((column, index) => {
orderSum += column.num orderSum += column.num
orderV += column.volume orderV += column.volume
orderW += column.weight orderW += column.weight
leviteSum += column.warehouseInInfoVO?column.warehouseInInfoVO.cartonsNum:0 leviteSum += column.warehouseInInfoVO?column.warehouseInInfoVO.cartonsNum:0
leviteV += column.warehouseInInfoVO?column.warehouseInInfoVO.volume:0 leviteV += column.warehouseInInfoVO?column.warehouseInInfoVO.volume:0
leviteW += column.warehouseInInfoVO?column.warehouseInInfoVO.weight:0 leviteW += column.warehouseInInfoVO?column.warehouseInInfoVO.weight:0
}); });
sums[1] = this.$t('下单统计')+' '+ orderSum+' '+this.$t('')+' '+ orderV.toFixed(2) +'' + orderW + ' kg ' + ' '+this.$t('入仓统计:')+ leviteSum+' '+this.$t('')+' '+ leviteV.toFixed(2) +'' + leviteW + ' kg' sums[1] = this.$t('下单统计')+' '+ orderSum+' '+this.$t('')+' '+ orderV.toFixed(2) +'' + orderW + ' kg ' + ' '+this.$t('入仓统计:')+ leviteSum+' '+this.$t('')+' '+ leviteV.toFixed(2) +'' + leviteW + ' kg'
...@@ -911,13 +911,13 @@ export default { ...@@ -911,13 +911,13 @@ export default {
}, },
importCityName(id){ importCityName(id){
var arr = this.tradeCityList.filter(item => item.id == id) var arr = this.tradeCityList.filter(item => item.id == id)
return arr.length>0?arr[0].titleZh:this.$t('') return arr.length>0?arr[0].titleZh:this.$t('')
}, },
submitForm(){ submitForm(){
if(this.splitData.length==0){ if(this.splitData.length==0){
this.$modal.msgError(this.$t("请先新建拆单")) this.$modal.msgError(this.$t("请先新建拆单"))
return return
} }
var params = { var params = {
...@@ -942,7 +942,7 @@ export default { ...@@ -942,7 +942,7 @@ export default {
this.form.destWarehouseId = this.importCityList.find(item=>item.titleZh==this.orderData.logisticsInfoDto.destTitleZh).id this.form.destWarehouseId = this.importCityList.find(item=>item.titleZh==this.orderData.logisticsInfoDto.destTitleZh).id
if(this.orderData.logisticsInfoDto&&this.orderData.logisticsInfoDto.channelId){ if(this.orderData.logisticsInfoDto&&this.orderData.logisticsInfoDto.channelId){
this.form.channelId = this.orderData.logisticsInfoDto.channelId this.form.channelId = this.orderData.logisticsInfoDto.channelId
} }
} }
this.open = true this.open = true
}, },
...@@ -985,11 +985,11 @@ export default { ...@@ -985,11 +985,11 @@ export default {
// this.$modal.msgError("请选择出货渠道"); // this.$modal.msgError("请选择出货渠道");
// } // }
var params = { var params = {
dstWarehouseId: that.form.destWarehouseId, dstWarehouseId: that.form.destWarehouseId,
parentOrderId: that.orderData.orderId, parentOrderId: that.orderData.orderId,
parentOrderNo: that.orderData.orderNo, parentOrderNo: that.orderData.orderNo,
transportId: that.form.transportId, transportId: that.form.transportId,
channelId:that.form.channelId channelId:that.form.channelId
} }
createSplit(params).then(res=>{ createSplit(params).then(res=>{
that.getList() that.getList()
...@@ -1067,7 +1067,7 @@ export default { ...@@ -1067,7 +1067,7 @@ export default {
that.$confirm(that.$t('是否移除货物吗?')).then(function () { that.$confirm(that.$t('是否移除货物吗?')).then(function () {
deleteSplitItem(id).then(res=>{ deleteSplitItem(id).then(res=>{
that.$message.success(that.$t("移除成功")); that.$message.success(that.$t("移除成功"));
that.getList() that.getList()
}) })
}) })
}, },
...@@ -1077,10 +1077,10 @@ export default { ...@@ -1077,10 +1077,10 @@ export default {
that.$message.error(that.$t("请输入取消原因")); that.$message.error(that.$t("请输入取消原因"));
return return
} }
cancelApply({orderId:that.queryParams.orderId,reason:that.reason}).then(res=>{ cancelApply({orderId:that.queryParams.orderId,reason:that.reason}).then(res=>{
that.$message.success(that.$t("取消成功")); that.$message.success(that.$t("取消成功"));
that.$store.dispatch('tagsView/delCurrentView') that.$store.dispatch('tagsView/delCurrentView')
}) })
}, },
shopCancel(){ shopCancel(){
this.shopOpen = false this.shopOpen = false
...@@ -1092,7 +1092,7 @@ export default { ...@@ -1092,7 +1092,7 @@ export default {
that.$confirm(that.$t('是否确认删除新拆的订单吗?')).then(function () { that.$confirm(that.$t('是否确认删除新拆的订单吗?')).then(function () {
deleteSplit(id).then(res=>{ deleteSplit(id).then(res=>{
that.$message.success(that.$t("删除成功")); that.$message.success(that.$t("删除成功"));
that.getList() that.getList()
}) })
}) })
}, },
...@@ -1105,8 +1105,8 @@ export default { ...@@ -1105,8 +1105,8 @@ export default {
// 计算体积 // 计算体积
calcVolume(row){ calcVolume(row){
let volume = Decimal(row.boxGauge1 || 0) let volume = Decimal(row.boxGauge1 || 0)
.times(Decimal(row.boxGauge2 || 0)) .times(Decimal(row.boxGauge2 || 0))
.times(Decimal(row.boxGauge3 || 0)).div(1000000) .times(Decimal(row.boxGauge3 || 0)).div(1000000)
// 如果是箱的单位要乘以箱数 // 如果是箱的单位要乘以箱数
if(row.specificationType === 1) { if(row.specificationType === 1) {
row.volume = volume.times(Decimal(row.num || 0)) row.volume = volume.times(Decimal(row.num || 0))
...@@ -1205,45 +1205,45 @@ export default { ...@@ -1205,45 +1205,45 @@ export default {
.page-title{ .page-title{
margin: 0; margin: 0;
} }
.card-title{ .card-title{
font-size: 18px; font-size: 18px;
font-weight: bold; font-weight: bold;
margin-top: 10px; margin-top: 10px;
} }
.card-info{ .card-info{
font-size: 16px; font-size: 16px;
} }
.card{ .card{
margin-top: 20px; margin-top: 20px;
} }
.btn-header{ .btn-header{
width: 90%; width: 90%;
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: space-between; justify-content: space-between;
margin: 20px 0; margin: 20px 0;
} }
.red{ .red{
color:#ff3430; color:#ff3430;
font-size: 15px; font-size: 15px;
} }
.footer_btn{ .footer_btn{
padding-bottom: 60px; padding-bottom: 60px;
} }
.cancel_notice{ .cancel_notice{
font-size: 16px; font-size: 16px;
font-weight: 600; font-weight: 600;
} }
.cancel_content{ .cancel_content{
display: flex; display: flex;
align-items: center; align-items: center;
padding-top: 20px; padding-top: 20px;
} }
.cancel_content span{ .cancel_content span{
width: 100px; width: 100px;
} }
::v-deep .el-form-item--mini.is-error{ ::v-deep .el-form-item--mini.is-error{
margin-bottom: 18px; margin-bottom: 18px;
} }
</style> </style>
...@@ -60,6 +60,9 @@ ...@@ -60,6 +60,9 @@
</el-checkbox> </el-checkbox>
</el-checkbox-group> </el-checkbox-group>
</el-form-item> </el-form-item>
<el-form-item v-if="channel" :label="$t('出货渠道')">
{{$l(channel, 'name')}}
</el-form-item>
<!--有路线则不显示路线选择器--> <!--有路线则不显示路线选择器-->
<routers-selector v-else v-model="selectedRoutes" :option="routerOption" :type="type" /> <routers-selector v-else v-model="selectedRoutes" :option="routerOption" :type="type" />
...@@ -202,7 +205,9 @@ ...@@ -202,7 +205,9 @@
<el-date-picker v-model="form.validateEndDate" value-format="yyyy-MM-dd HH:mm:ss"></el-date-picker> <el-date-picker v-model="form.validateEndDate" value-format="yyyy-MM-dd HH:mm:ss"></el-date-picker>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12">
<!--编辑的时候右侧显示快捷设置,查看的时候空运显示商品清关费-->
<el-col :span="12" v-if="!readonly">
<h2>{{$t('快捷设置')}}</h2> <h2>{{$t('快捷设置')}}</h2>
<div class="flex items-center"> <div class="flex items-center">
{{$t('批量加价')}}+ {{$t('批量加价')}}+
...@@ -222,6 +227,15 @@ ...@@ -222,6 +227,15 @@
<el-button @click="quickSet" type="primary" :disabled="!quickForm.plus && !quickForm.minus">{{$t('确定')}}</el-button> <el-button @click="quickSet" type="primary" :disabled="!quickForm.plus && !quickForm.minus">{{$t('确定')}}</el-button>
</div> </div>
</el-col> </el-col>
<el-col :span="12" v-else-if="readonly && type === 'air'">
<!--商品清关费-->
<h2>商品清关费价格</h2>
<packaging-type v-if="product && product.priceStepClearanceList && product.priceStepClearanceList.length"
:value="product" key-arr="priceStepClearanceList" readonly/>
<div v-else>
未设置清关费
</div>
</el-col>
</el-row> </el-row>
</el-card> </el-card>
...@@ -363,8 +377,10 @@ import Inputor from '@/components/Inputor' ...@@ -363,8 +377,10 @@ import Inputor from '@/components/Inputor'
import {parseTime} from '@/utils/ruoyi' import {parseTime} from '@/utils/ruoyi'
import {openedRouterList} from '@/api/ecw/warehouse' import {openedRouterList} from '@/api/ecw/warehouse'
import Decimal from "decimal.js"; import Decimal from "decimal.js";
import {getChannel} from "@/api/ecw/channel";
import PackagingType from "@/views/ecw/channel/componrnts/packaging-type.vue";
export default { export default {
components: { RoutersSelector, ProductSelector, Selector, Inputor }, components: {PackagingType, RoutersSelector, ProductSelector, Selector, Inputor },
filters: {parseTime}, filters: {parseTime},
data() { data() {
return { return {
...@@ -399,7 +415,9 @@ export default { ...@@ -399,7 +415,9 @@ export default {
showLogsDialog: false, // 显示价格日志弹层 showLogsDialog: false, // 显示价格日志弹层
logs: [], logs: [],
// 批量加价/减价 // 批量加价/减价
quickForm:{} // 快速加价/减价表单 quickForm:{}, // 快速加价/减价表单
// 渠道信息
channel: null
} }
}, },
computed: { computed: {
...@@ -555,6 +573,12 @@ export default { ...@@ -555,6 +573,12 @@ export default {
if(this.$route.query.action == 'update'){ if(this.$route.query.action == 'update'){
let res = await getProductPrice(this.$route.query.id) let res = await getProductPrice(this.$route.query.id)
this.$set(this, 'form', res.data) this.$set(this, 'form', res.data)
// 显示渠道
if(this.readonly && this.form.shippingChannelId){
getChannel(this.form.shippingChannelId).then(res => {
this.channel = res.data
})
}
if(this.form.needPay){ if(this.form.needPay){
this.needPay = true this.needPay = true
} }
......
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