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,13 +466,14 @@ export default { ...@@ -449,13 +466,14 @@ 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) {
console.log(command, row);
switch (command) { switch (command) {
case "detail": case "detail":
this.$router.push("/boxAir/query/" + row.id); this.$router.push("/boxAir/query/" + row.id);
...@@ -490,7 +508,7 @@ export default { ...@@ -490,7 +508,7 @@ export default {
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"
); );
...@@ -498,7 +516,7 @@ export default { ...@@ -498,7 +516,7 @@ export default {
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"
); );
...@@ -506,7 +524,7 @@ export default { ...@@ -506,7 +524,7 @@ export default {
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"
); );
...@@ -514,7 +532,7 @@ export default { ...@@ -514,7 +532,7 @@ export default {
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"
); );
...@@ -522,7 +540,20 @@ export default { ...@@ -522,7 +540,20 @@ export default {
case "downloadAgentListFiles": case "downloadAgentListFiles":
case "downloadSoncapFiles": case "downloadSoncapFiles":
case "downloadLadingCopy": case "downloadLadingCopy":
downloadFileByUrl(command, { shipmentId: row.id }); downloadFileByUrl(command, {shipmentId: row.id});
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; break;
} }
if (["editLadingBill", "cost", "error"].includes(command)) { if (["editLadingBill", "cost", "error"].includes(command)) {
...@@ -533,7 +564,7 @@ export default { ...@@ -533,7 +564,7 @@ export default {
} }
}, },
} }
} }
</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>
......
...@@ -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){
IsExamine(){ this.processInstanceId = res.data.formId
return this.list.some(e => e.status === 1) getBatchFeeByBusinessId(res.data.orderApprovalId).then(res => {
this.list = res.data
})
} }
})
}, },
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(){ submit(){
if(this.isModifyIf){ feeApplicationCreateBatch( {
applicationUpdate({...this.list[this.isModify.findIndex(e => e === false)],status:1}).then(r => { orderFeeApplicationCreateReqVOList: this.list,
if(r.code === 0){ copyUserId:this.selectedUsers,
this.$emit('update:dialogVisible',false) orderId: this.orderId
this.$message.success(this.$t('修改成功')); }).then(r=>{
}
})
}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){ if(r.code === 0){
this.$emit('update:dialogVisible',false) this.$emit('update:dialogVisible',false)
this.$message.success(this.$t('添加成功')); this.$message.success(this.$t('添加成功'));
this.selectedUsers = []; this.selectedUsers = [];
} }
}) })
}else {
this.$message.success(this.$t('当前有申请费用为审核中或未提交,请审核后在申请'));
}
}
}, },
getOrderList(){ goProcessDetail(){
ApplicationListByOrderId({orderId: this.orderId}).then(r => { this.$emit('update:dialogVisible',false)
if(r.code === 0){ this.$router.push('/bpm/process-instance/detail?id=' + this.processInstanceId)
this.list = r.data;
this.list.forEach(()=>this.isModify.push(true))
let p = this.list.find(e => e.status === 1)
}
})
},
modify(row){
if(this.list.some(i => i.status === 0 || i.status === 1))return this.$message.warning(this.$t('当前有未提交的数据或审核中的数据不能修改'))
this.isModifyIf = true;
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:{
......
This diff is collapsed.
...@@ -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