Commit 1ecbfeec authored by 我在何方's avatar 我在何方
parents 4eee6883 48e82c0d
...@@ -112,7 +112,7 @@ export function getBmpDetailByBusinessId(businessId) { ...@@ -112,7 +112,7 @@ export function getBmpDetailByBusinessId(businessId) {
// 导出订单异常 Excel // 导出订单异常 Excel
export function exportExcel(params) { export function exportExcel(params) {
return request({ return request({
url: '/ecw/order-exception/export-excel', url: '/ecw/order-exception/export-excel-async',
method: 'get', method: 'get',
timeout: 30*60*1000, timeout: 30*60*1000,
params, params,
......
...@@ -21,3 +21,17 @@ export function download(id){ ...@@ -21,3 +21,17 @@ export function download(id){
export function downloadFileResponse(url){ export function downloadFileResponse(url){
return axios.get(url, {responseType: 'blob'}) return axios.get(url, {responseType: 'blob'})
} }
// 重试
export function retry(id){
return request({
url: '/system/download-log/retry/' + id
})
}
// 删除
export function deleteLog(id){
return request({
url: '/system/download-log/del/' + id
})
}
...@@ -421,6 +421,10 @@ export default { ...@@ -421,6 +421,10 @@ export default {
component: () => import('@/views/ecw/customer/components/customer-handover-details.vue'), component: () => import('@/views/ecw/customer/components/customer-handover-details.vue'),
processId: this.processInstance.businessKey, processId: this.processInstance.businessKey,
type: this.processInstance.processDefinition?.formCustomViewPath type: this.processInstance.processDefinition?.formCustomViewPath
},
// 出货审核
air_shipment: {
} }
} }
console.log('formCustomViewPath', this.processInstance.processDefinition.formCustomViewPath.trim()) console.log('formCustomViewPath', this.processInstance.processDefinition.formCustomViewPath.trim())
......
...@@ -302,7 +302,7 @@ export default { ...@@ -302,7 +302,7 @@ export default {
// 下载 // 下载
downloadList: [ downloadList: [
{ title: this.$t("预装单"), serviceName: "downloadPreloadGoodsList", hasPermi: "shipment:box:download:downloadPreloadGoodsList" }, { title: this.$t("预装单"), serviceName: "downloadPreloadGoodsList", hasPermi: "shipment:box:download:downloadPreloadGoodsList" },
{ title: this.$t("已装单"), serviceName: "downloadLoadGoodsList", hasPermi: "shipment:box:download:downloadLoadGoodsList" }, // { title: this.$t("已装单"), serviceName: "downloadLoadGoodsList", hasPermi: "shipment:box:download:downloadLoadGoodsList" },
{ title: this.$t("应收汇总表"), serviceName: "downloadReceivableList", hasPermi: "shipment:box:download:downloadReceivableList" }, { title: this.$t("应收汇总表"), serviceName: "downloadReceivableList", hasPermi: "shipment:box:download:downloadReceivableList" },
{ {
title: this.$t("提货单"), title: this.$t("提货单"),
......
...@@ -23,7 +23,7 @@ ...@@ -23,7 +23,7 @@
</el-table-column> </el-table-column>
<el-table-column :label="$t('备案')" align="center"> <el-table-column :label="$t('备案')" align="center">
<template slot-scope="{ row }"> <template slot-scope="{ row }">
<dict-tag :type="DICT_TYPE.ECW_IS_BRAND" :value="row.productRecord" /> <dict-tag :type="DICT_TYPE.PRODUCT_RECORD_ATTRIBUTE" :value="row.productRecord" />
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('箱数')" align="center" prop="sumNum"> <el-table-column :label="$t('箱数')" align="center" prop="sumNum">
...@@ -265,4 +265,4 @@ export default { ...@@ -265,4 +265,4 @@ export default {
</script> </script>
<style> <style>
</style> </style>
\ No newline at end of file
...@@ -28,7 +28,6 @@ ...@@ -28,7 +28,6 @@
<el-form-item :label="$t('司机联系方式')"> <el-form-item :label="$t('司机联系方式')">
<el-input v-model="airShipmentObj.driverPhone" :placeholder="$t('请输入司机联系方式')"></el-input> <el-input v-model="airShipmentObj.driverPhone" :placeholder="$t('请输入司机联系方式')"></el-input>
</el-form-item> </el-form-item>
</div> </div>
<div v-show="airShipmentObj.deliverType === '2'"> <div v-show="airShipmentObj.deliverType === '2'">
...@@ -52,13 +51,15 @@ ...@@ -52,13 +51,15 @@
<el-form-item :label="$t('司机联系方式')"> <el-form-item :label="$t('司机联系方式')">
<el-input v-model="airShipmentObj.driverPhone" :placeholder="$t('请输入司机联系方式')"></el-input> <el-input v-model="airShipmentObj.driverPhone" :placeholder="$t('请输入司机联系方式')"></el-input>
</el-form-item> </el-form-item>
</div> </div>
<el-form-item>
<work-flow xmlkey="shipment_audit" v-model="airShipmentObj.copyUserId"></work-flow>
</el-form-item>
</el-form> </el-form>
<el-row class="operate-button"> <el-row class="operate-button">
<el-button v-if="airShipmentApprovalInfo && airShipmentApprovalInfo.approvalStatus == 1" type="primary">{{$t('出货审核中')}}</el-button> <el-button v-if="airShipmentApprovalInfo && airShipmentApprovalInfo.approvalStatus == 1" type="primary" @click="goBmpDetail">{{$t('出货审核中')}}</el-button>
<el-button v-if="airShipmentApprovalInfo && airShipmentApprovalInfo.approvalStatus == 1" type="primary" @click="canclAudit">{{$t('取消出货审核')}}</el-button> <el-button v-if="airShipmentApprovalInfo && airShipmentApprovalInfo.approvalStatus == 1" type="primary" @click="canclAudit">{{$t('取消出货审核')}}</el-button>
<el-button type="primary" @click="onSubmit(1)">{{$t('保存')}}</el-button> <el-button type="primary" @click="onSubmit(1)">{{$t('保存')}}</el-button>
<el-button v-if="!airShipmentApprovalInfo || airShipmentApprovalInfo.approvalStatus != 1" type="success" @click="onSubmit(2)">{{$t('提交')}}</el-button> <el-button v-if="!airShipmentApprovalInfo || airShipmentApprovalInfo.approvalStatus != 1" type="success" @click="onSubmit(2)">{{$t('提交')}}</el-button>
...@@ -71,14 +72,14 @@ ...@@ -71,14 +72,14 @@
import { airShipmentCreate, approvalCancel } from "@/api/ecw/boxSea"; import { airShipmentCreate, approvalCancel } from "@/api/ecw/boxSea";
import userSelect from "./common/userSelect.vue"; import userSelect from "./common/userSelect.vue";
import { constantDict, formatDateStr, formatNumberString, serviceMsg } from "../utils"; import { constantDict, formatDateStr, formatNumberString, serviceMsg } from "../utils";
import WorkFlow from "@/components/WorkFlow/index.vue";
/** /**
* 驳船 * 驳船
*/ */
export default { export default {
name: "shipment", name: "shipment",
inheritAttrs: false, inheritAttrs: false,
components: { userSelect }, components: { userSelect, WorkFlow },
data() { data() {
return { return {
// 空运出货对象 // 空运出货对象
...@@ -117,11 +118,19 @@ export default { ...@@ -117,11 +118,19 @@ export default {
} }
}); });
}, },
goBmpDetail(){
this.$emit("closeDialog", 'close');
this.$router.push("/bpm/process-instance/detail?id=" + this.airShipmentApprovalInfo.bpmProcessId)
},
/* 取消审核 */ /* 取消审核 */
canclAudit() { async canclAudit() {
console.log(this.shipmentObj) console.log(this.shipmentObj)
const res = await this.$prompt(this.$t("取消审核"), this.$t("请输入取消原因"), {
confirmButtonText: this.$t("确定"),
cancelButtonText: this.$t("取消"),
})
approvalCancel({ approvalCancel({
applyReason: this.$t("取消审核"), applyReason: res.value,
id: this.airShipmentApprovalInfo.id, id: this.airShipmentApprovalInfo.id,
shipmentId: this.$attrs.shipmentObj.id, shipmentId: this.$attrs.shipmentObj.id,
}).then((res) => { }).then((res) => {
......
<template> <template>
<div> <div>
<el-select <el-select filterable :value="value === 0 ? undefined : value" @change="change" v-bind="$attrs" clearable>
filterable <el-option v-for="supplier in getSuppliers" :key="supplier.id" :label="$t('公司名称:') + $l(supplier, 'company') + $t(',地址:') + supplier.externalBackVO.receiveAddress + $t(',邮箱:') + supplier.externalBackVO.receiveEmail + $t(',品名:') + supplier.externalBackVO.goodName + $t(',From M No:') + supplier.externalBackVO.fromNo + $t(',BA No:') + supplier.externalBackVO.baNo" :value="supplier.id" style="width: 600px">
:value="value === 0 ? undefined : value" <el-tooltip class="item" effect="dark" placement="top">
@change="change" <div slot="content">
v-bind="$attrs" <span>{{ $t('公司名称:') + $l(supplier, 'company') + $t(',地址:') + supplier.externalBackVO.receiveAddress + $t(',邮箱:') + supplier.externalBackVO.receiveEmail + $t(',品名:') + supplier.externalBackVO.goodName + $t(',From M No:') + supplier.externalBackVO.fromNo + $t(',BA No:') + supplier.externalBackVO.baNo }}</span>
clearable </div>
> <div class="iclass">{{ $t('公司名称:') + $l(supplier, 'company') + $t(',地址:') + supplier.externalBackVO.receiveAddress + $t(',邮箱:') + supplier.externalBackVO.receiveEmail + $t(',品名:') + supplier.externalBackVO.goodName + $t(',From M No:') + supplier.externalBackVO.fromNo + $t(',BA No:') + supplier.externalBackVO.baNo }}</div>
<el-option </el-tooltip>
v-for="supplier in getSuppliers" </el-option>
:key="supplier.id" </el-select>
:label="$t('公司名称:')+$l(supplier, 'company')+$t(',地址:')+supplier.externalBackVO.receiveAddress+$t(',邮箱:')+supplier.externalBackVO.receiveEmail+$t(',品名:')+supplier.externalBackVO.goodName+$t(',From M No:')+supplier.externalBackVO
.fromNo+$t(',BA No:')+supplier.externalBackVO
.baNo"
:value="supplier.id"
></el-option>
</el-select>
</div> </div>
</template> </template>
<script> <script>
...@@ -25,7 +18,7 @@ ...@@ -25,7 +18,7 @@
* 供应商 * 供应商
*/ */
export default { export default {
name: "supplierSelect", name: 'supplierSelect',
props: { props: {
companyType: String, companyType: String,
value: Number, value: Number,
...@@ -33,38 +26,40 @@ export default { ...@@ -33,38 +26,40 @@ export default {
areaType: { areaType: {
type: Number, type: Number,
default: 0 default: 0
}, }
}, },
model: { model: {
prop: "value", prop: 'value',
event: "change", event: 'change'
}, },
data() { data() {
return {}; return {}
}, },
computed: { computed: {
getSuppliers() { getSuppliers() {
let allSupplier = this.allSupplier.filter( let allSupplier = this.allSupplier.filter((item) => item.areaType == this.areaType)
(item) => item.areaType == this.areaType allSupplier.forEach((map) => {
); map.externalBackVO.receiveAddress = map.externalBackVO.receiveAddress ? map.externalBackVO.receiveAddress : ''
allSupplier.forEach(map=>{ map.externalBackVO.receiveEmail = map.externalBackVO.receiveEmail ? map.externalBackVO.receiveEmail : ''
map.externalBackVO.receiveAddress = map.externalBackVO.receiveAddress?map.externalBackVO.receiveAddress: '' map.externalBackVO.goodName = map.externalBackVO.goodName ? map.externalBackVO.goodName : ''
map.externalBackVO.receiveEmail = map.externalBackVO.receiveEmail?map.externalBackVO.receiveEmail:'' map.externalBackVO.fromNo = map.externalBackVO.fromNo ? map.externalBackVO.fromNo : ''
map.externalBackVO.goodName = map.externalBackVO.goodName?map.externalBackVO.goodName:'' map.externalBackVO.baNo = map.externalBackVO.baNo ? map.externalBackVO.baNo : ''
map.externalBackVO.fromNo = map.externalBackVO.fromNo?map.externalBackVO.fromNo:''
map.externalBackVO.baNo = map.externalBackVO.baNo?map.externalBackVO.baNo:''
}) })
if(this.areaType == 1 || !this.companyType) return allSupplier; if (this.areaType == 1 || !this.companyType) return allSupplier
return allSupplier.filter((item) => return allSupplier.filter((item) => item.companyTypes.includes(this.companyType))
item.companyTypes.includes(this.companyType) }
);
},
}, },
methods: { methods: {
change(val) { change(val) {
this.$emit("change", val); this.$emit('change', val)
}, }
}, }
}; }
</script> </script>
<style scoped>
.iclass {
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
</style>
...@@ -56,7 +56,7 @@ ...@@ -56,7 +56,7 @@
<el-descriptions-item :label="$t('付款人姓名')">{{ customer.payerName }}</el-descriptions-item> <el-descriptions-item :label="$t('付款人姓名')">{{ customer.payerName }}</el-descriptions-item>
<el-descriptions-item v-if="permissions.includes('ecw:customer:query-card')" :label="$t('身份证姓名')">{{ customer.carName }}</el-descriptions-item> <el-descriptions-item v-if="permissions.includes('ecw:customer:query-card')" :label="$t('身份证姓名')">{{ customer.carName }}</el-descriptions-item>
<el-descriptions-item v-if="permissions.includes('ecw:customer:query-card')" :label="$t('身份证号码')">{{ customer.carNo }}</el-descriptions-item> <el-descriptions-item v-if="permissions.includes('ecw:customer:query-card')" :label="$t('身份证号码')">{{ customer.carNo }}</el-descriptions-item>
<!-- <el-descriptions-item :label="$t('信用等级')">{{ customer }}</el-descriptions-item>--> <el-descriptions-item :label="$t('询盘信息')">{{ customer.inquiry }}</el-descriptions-item>
</el-descriptions> </el-descriptions>
</el-card> </el-card>
......
...@@ -66,7 +66,7 @@ export default { ...@@ -66,7 +66,7 @@ export default {
}).then(r=>{ }).then(r=>{
if(r.code === 0){ if(r.code === 0){
if(r.data){ if(r.data){
this.$message.warning(r.data) this.$message.success(r.data)
this.$emit('update:show',false) this.$emit('update:show',false)
this.$emit('update:customerIds',[]) this.$emit('update:customerIds',[])
this. service = ''; this. service = '';
......
...@@ -183,7 +183,7 @@ ...@@ -183,7 +183,7 @@
<el-descriptions :column="5" border> <el-descriptions :column="5" border>
<el-descriptions-item :label="$t('保价费')"> <el-descriptions-item :label="$t('保价费')">
{{list.estCostVO?list.estCostVO.insuranceFee: 0}} {{$t('美元')}} {{list.estCostVO?list.estCostVO.insuranceFee: 0}} {{ selectedRouter ? currentcyMap[selectedRouter.currencyUnit || 1] : '' }}
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item :label="$t('总运费')"> <el-descriptions-item :label="$t('总运费')">
<template v-if="freightFeeList.length>0" v-for="item in freightFeeList"> <template v-if="freightFeeList.length>0" v-for="item in freightFeeList">
...@@ -435,6 +435,11 @@ ...@@ -435,6 +435,11 @@
return this.$l(row, 'prodTitle') return this.$l(row, 'prodTitle')
} }
}, },
selectedRouter(){
// otherService 1 送货上门,2非控货订单代收货款
if(!this.list.lineId) return null
return this.routerList.find(item => item.id == this.list.lineId)
},
currentcyMap(){ currentcyMap(){
let map = {} let map = {}
this.currencyList.forEach(item => { this.currencyList.forEach(item => {
...@@ -495,32 +500,32 @@ ...@@ -495,32 +500,32 @@
originalFeeList(){ originalFeeList(){
let arr = [] let arr = []
this.clearanceFeeList.forEach(item => { this.clearanceFeeList.forEach(item => {
let it = {...item} let it = {
src: this.$t('清关费'),
currencyId: item.currencyId,
amount: Decimal(item.amount)
}
let freight = this.freightFeeList.find(fee => fee.currencyId == item.currencyId) let freight = this.freightFeeList.find(fee => fee.currencyId == item.currencyId)
if(freight){ if(freight){
it.amount += freight.amount it.amount = it.amount.plus(freight.amount)
} }
arr.push(it) arr.push(it)
}) })
// 判断是否有运费单位不在清关费里的
this.freightFeeList.forEach(item => { this.freightFeeList.forEach(item => {
if(!arr.find(items=>items.currencyId==item.currencyId)){ if(!arr.find(arrItem => arrItem.currencyId == item.currencyId)){
let its = {...item} arr.push({
// let freights = this.clearanceFeeList.find(fee => fee.currencyId == item.currencyId) src: this.$t('未计算的运费'),
// if(freights){ currencyId: item.currencyId,
// its.amount += freights.amount amount: Decimal(item.amount)
// } })
arr.push(its)
} }
}) })
return arr return arr
}, },
// 预计费用(原价 - 优惠金额) // 预计费用(原价 - 优惠金额)
estimatedCosts(){ estimatedCosts(){
let arr = [] let arr = []
let withInsuranceFee = false
let withOtherFee = false
this.originalFeeList.forEach(item => { this.originalFeeList.forEach(item => {
let it = { let it = {
currencyId: item.currencyId, currencyId: item.currencyId,
...@@ -530,56 +535,38 @@ ...@@ -530,56 +535,38 @@
if(coupon){ if(coupon){
it.amount = it.amount.minus(coupon.reduceAmount) it.amount = it.amount.minus(coupon.reduceAmount)
} }
// if(this.list.otherFee && this.list.otherFeeCurrencyId == item.currencyId){
// it.amount = it.amount.plus(this.list.otherFee)
// withOtherFee = true
// }
let otherFee = this.otherFeeList.find(fee => fee.currencyId == item.currencyId)
if(otherFee){
it.amount = it.amount.plus(otherFee.amount || 0)
withOtherFee = true
}
// 保价费(美元)
if(item.currencyId == 1 && this.fee && this.fee.insuranceFee){
it.amount = it.amount.plus(this.fee.insuranceFee)
withInsuranceFee = true
}
arr.push(it) arr.push(it)
}) })
// 累加保价费
const insuranceFeeIndex = arr.findIndex(item => item.currencyId == this.insuranceFeeCurrency)
const insuranceFee = this.list&&this.list.estCostVO&&this.list.estCostVO.insuranceFee
if(insuranceFeeIndex > -1){
arr[insuranceFeeIndex].amount = arr[insuranceFeeIndex].amount.plus(insuranceFee || 0)
}else{
arr.push({
currencyId: this.insuranceFeeCurrency,
amount: Decimal(insuranceFee || 0)
})
}
// 如果没有累加其他费用,则另外增加货币 // 累加其他费用
if(!withOtherFee && this.list.otherFee){ const otherFeeIndex = arr.findIndex(item => item.currencyId == this.list.otherFeeCurrencyId)
let fee = { if(otherFeeIndex > -1){
currencyId: this.list.otherFeeCurrencyId, arr[otherFeeIndex].amount = arr[otherFeeIndex].amount.plus(this.list.otherFee || 0)
amount: Decimal(this.list.otherFee) }else{
} if(this.list.otherFee>0){
// 如果保价费跟其他费用是同一种货币(都是美元)
if(!withInsuranceFee && this.fee && this.fee.insuranceFee && this.list.otherFeeCurrencyId == 1){
fee.amount = fee.amount.plus(this.fee.insuranceFee)
}
arr.push(fee)
}
// 没有累加保价费(没有美元计价)但是有保价费则需要加上去
if(!withInsuranceFee && this.fee && this.fee.insuranceFee){
arr.push({ arr.push({
currencyId: 1, currencyId: this.list.otherFeeCurrencyId,
amount: Decimal(this.fee.insuranceFee) amount: Decimal(this.list.otherFee || 0)
}) })
} }
this.otherFeeList.forEach(item => { }
if(!arr.find(items=>items.currencyId==item.currencyId)){ return arr
let its = {...item} },
// let freights = this.clearanceFeeList.find(fee => fee.currencyId == item.currencyId) // 保价费单位(路线里设置,默认美元)
// if(freights){ insuranceFeeCurrency() {
// its.amount += freights.amount return this.selectedRouter?.currencyUnit || 1;
// } },
arr.push(its)
}
})
return arr
}
}, },
created() { created() {
getCurrencyList().then(res => this.currencyList = res.data) getCurrencyList().then(res => this.currencyList = res.data)
......
...@@ -758,10 +758,12 @@ export default { ...@@ -758,10 +758,12 @@ export default {
if(otherFeeIndex > -1){ if(otherFeeIndex > -1){
arr[otherFeeIndex].amount = arr[otherFeeIndex].amount.plus(this.form.otherFee || 0) arr[otherFeeIndex].amount = arr[otherFeeIndex].amount.plus(this.form.otherFee || 0)
}else{ }else{
arr.push({ if(this.form.otherFee>0){
currencyId: this.form.otherFeeCurrencyId, arr.push({
amount: Decimal(this.form.otherFee || 0) currencyId: this.form.otherFeeCurrencyId,
}) amount: Decimal(this.form.otherFee || 0)
})
}
} }
return arr return arr
......
...@@ -373,8 +373,12 @@ ...@@ -373,8 +373,12 @@
<el-card class="mt-10"> <el-card class="mt-10">
<span slot="header">{{$t('特价折扣')}}</span> <span slot="header">{{$t('特价折扣')}}</span>
<el-table :data="orderSpecialApplyVOList"> <el-table :data="orderSpecialApplyVOList">
<el-table-column :label="$t('商品类型')" prop="prodType"></el-table-column> <el-table-column :label="$t('商品类型')" prop="prodType">
<el-table-column :label="$t('商品名称')" prop="prodTitleEn"></el-table-column> <template slot-scope="{row}">
{{showProductTypeName(row.prodType)}}
</template>
</el-table-column>
<el-table-column :label="$t('商品名称')" prop="prodTitleZh"></el-table-column>
<el-table-column :label="$t('英文名称')" prop="prodTitleEn"></el-table-column> <el-table-column :label="$t('英文名称')" prop="prodTitleEn"></el-table-column>
<!--<el-table-column :label="$t('线路')" width="120" prop="line"> <!--<el-table-column :label="$t('线路')" width="120" prop="line">
...@@ -420,6 +424,7 @@ import Price from "@/views/ecw/order/components/price.vue"; ...@@ -420,6 +424,7 @@ import Price from "@/views/ecw/order/components/price.vue";
import {parseTime} from "@/utils/ruoyi"; import {parseTime} from "@/utils/ruoyi";
import Decimal from "decimal.js"; import Decimal from "decimal.js";
import {createElementVNode} from "@vue/runtime-dom"; import {createElementVNode} from "@vue/runtime-dom";
import {getProductTypeList} from "@/api/ecw/productType";
export default { export default {
props:{ props:{
orderId: [Number, String], orderId: [Number, String],
...@@ -437,7 +442,9 @@ export default { ...@@ -437,7 +442,9 @@ export default {
// 订单费用汇总 // 订单费用汇总
orderSummary: null, orderSummary: null,
// 订单费用明细汇总 // 订单费用明细汇总
orderDetailSummary: null orderDetailSummary: null,
// 商品类型
productTypeList: []
} }
}, },
computed:{ computed:{
...@@ -467,8 +474,25 @@ export default { ...@@ -467,8 +474,25 @@ export default {
// 特价折扣 // 特价折扣
orderSpecialApplyVOList(){ orderSpecialApplyVOList(){
return this.orderDetailSummary?.orderSpecialApplyVOList || [] return this.orderDetailSummary?.orderSpecialApplyVOList || []
},
// 根据商品类型ID返回名称
showProductTypeName(){
return id => {
if(!this.productTypeList.length) return '-'
const item = this.productTypeList.find(item => item.id === id)
return this.$l(item, 'title')
}
} }
}, },
watch:{
orderSpecialApplyVOList(list){
if(list.length && !this.productTypeList.length){
getProductTypeList().then(res => {
this.productTypeList = res.data
})
}
}
},
mounted() { mounted() {
this.getOrderSummary() this.getOrderSummary()
this.getOrderDetailSummary() this.getOrderDetailSummary()
......
...@@ -495,7 +495,7 @@ ...@@ -495,7 +495,7 @@
</div> </div>
<div v-if="[2,3,4].indexOf(+form.transportId) > -1"> <div v-if="[2,3,4].indexOf(+form.transportId) > -1">
<el-form-item :label="$t('清关证书')"> <el-form-item :label="$t('清关证书')">
<dict-selector v-model="form.customsClearCert" form-type="radio" :type="DICT_TYPE.INFRA_BOOLEAN_STRING" formatter="bool" defaultable :disabled="false" /> <dict-selector v-model="form.customsClearCert" form-type="radio" :type="DICT_TYPE.INFRA_BOOLEAN_STRING" formatter="bool" :defaultable="!editMode" :disabled="false" />
</el-form-item> </el-form-item>
<el-form-item :label="$t('清关证书备注')" > <el-form-item :label="$t('清关证书备注')" >
<el-input v-model="form.customsClearCertRemarks" :disabled="false"></el-input> <el-input v-model="form.customsClearCertRemarks" :disabled="false"></el-input>
...@@ -503,12 +503,12 @@ ...@@ -503,12 +503,12 @@
</div> </div>
<div v-if="[3,4].indexOf(+form.transportId) > -1"> <div v-if="[3,4].indexOf(+form.transportId) > -1">
<el-form-item :label="$t('是否拆包')"> <el-form-item :label="$t('是否拆包')">
<dict-selector v-model="form.isUnpack" form-type="radio" :type="DICT_TYPE.INFRA_BOOLEAN_STRING" formatter="bool" defaultable :disabled="false" /> <dict-selector v-model="form.isUnpack" form-type="radio" :type="DICT_TYPE.INFRA_BOOLEAN_STRING" formatter="bool" :defaultable="!editMode" :disabled="false" />
</el-form-item> </el-form-item>
</div> </div>
<div class="form-section"> <div class="form-section">
<el-form-item :label="$t('单票立刻转运')" v-if="[3,4].indexOf(+form.transportId) > -1"> <el-form-item :label="$t('单票立刻转运')" v-if="[3,4].indexOf(+form.transportId) > -1">
<dict-selector v-model="form.isSingleTicketTransport" form-type="radio" :type="DICT_TYPE.INFRA_BOOLEAN_STRING" formatter="bool" defaultable :disabled="false" /> <dict-selector v-model="form.isSingleTicketTransport" form-type="radio" :type="DICT_TYPE.INFRA_BOOLEAN_STRING" formatter="bool" :defaultable="!editMode" :disabled="false" />
<span style="margin-left:10px">{{$t('注:若只有一件,货到仓库立即发,选“是”,多件需仓库集运待发,选“否”')}}</span> <span style="margin-left:10px">{{$t('注:若只有一件,货到仓库立即发,选“是”,多件需仓库集运待发,选“否”')}}</span>
</el-form-item> </el-form-item>
</div> </div>
...@@ -870,7 +870,7 @@ export default { ...@@ -870,7 +870,7 @@ export default {
// 空运 // 空运
if(!this.initing && (this.form.transportId == 4 || this.form.transportId == 3)){ if(!this.initing && (this.form.transportId == 4 || this.form.transportId == 3)){
this.$nextTick(() => { this.$nextTick(() => {
connsole.log('切换空运,修改默认值') console.log('切换空运,修改默认值')
this.$set(this, 'form', Object.assign(this.form, { this.$set(this, 'form', Object.assign(this.form, {
doubleClear: 2, doubleClear: 2,
customsClearCert: false, customsClearCert: false,
...@@ -1068,6 +1068,12 @@ export default { ...@@ -1068,6 +1068,12 @@ export default {
this.getOfferData() this.getOfferData()
/* this.form.orderItemVOList = []; */ /* this.form.orderItemVOList = []; */
console.log({...this.form}, {
customsClearCert: this.form.customsClearCert,
isUnpack: this.form.isUnpack,
isSingleTicketTransport: this.form.isSingleTicketTransport,
})
this.form.type = this.form.type ? this.form.type.split(',').filter(item => item != '') : [] this.form.type = this.form.type ? this.form.type.split(',').filter(item => item != '') : []
this.form.packageTypeArr = this.form.packageType ? this.form.packageType.split(',').filter(item => item != '') : [] this.form.packageTypeArr = this.form.packageType ? this.form.packageType.split(',').filter(item => item != '') : []
if(res.data.consignorVO){ if(res.data.consignorVO){
......
...@@ -182,17 +182,17 @@ ...@@ -182,17 +182,17 @@
</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">
<div v-if="scope.row.orderExceptionType!='order_heavy_cargo_exception'&&scope.row.orderExceptionType!='order_bulky_cargo_exception'"> <div v-if="scope.row.orderType==1">
<span v-if="scope.row.orderStatus >= 5 ">{{scope.row.volume+"m³/"+scope.row.weight+"kg"}}</span> <span v-if="scope.row.orderStatus >= 5 ">{{scope.row.volume+"m³/"+scope.row.weight+"kg"}}</span>
<span v-else>{{scope.row.totalVolume+"m³/"+scope.row.totalWeight+"kg"}}</span> <span v-else>{{scope.row.totalVolume+"m³/"+scope.row.totalWeight+"kg"}}</span>
</div> </div>
<el-tooltip v-if="scope.row.orderExceptionType=='order_heavy_cargo_exception'" class="item" effect="dark" :content="(scope.row.wvolume||0)+'m³'" placement="bottom"> <el-tooltip v-else-if="scope.row.orderType==2" class="item" effect="dark" :content="(scope.row.wvolume||0)+'m³'" placement="bottom">
<span style="color:#ff4949" v-if="scope.row.orderStatus >= 5 ">{{scope.row.volume+"m³/"+scope.row.weight+"kg"}}</span> <span class="red" v-if="scope.row.orderStatus >= 5 ">{{scope.row.volume+"m³/"+scope.row.weight+"kg"}}</span>
<span style="color:#ff4949" v-else>{{scope.row.totalVolume+"m³/"+scope.row.totalWeight+"kg"}}</span> <span class="red" v-else>{{scope.row.totalVolume+"m³/"+scope.row.totalWeight+"kg"}}</span>
</el-tooltip> </el-tooltip>
<el-tooltip v-if="scope.row.orderExceptionType=='order_bulky_cargo_exception'" class="item" effect="dark" :content="(scope.row.vweight||0)+'kg'" placement="bottom"> <el-tooltip v-else-if="scope.row.orderType==3" class="item" effect="dark" :content="(scope.row.vweight||0)+'kg'" placement="bottom">
<span style="color:#ff4949" v-if="scope.row.orderStatus >= 5 ">{{scope.row.volume+"m³/"+scope.row.weight+"kg"}}</span> <span class="red" v-if="scope.row.orderStatus >= 5 ">{{scope.row.volume+"m³/"+scope.row.weight+"kg"}}</span>
<span style="color:#ff4949" v-else>{{scope.row.totalVolume+"m³/"+scope.row.totalWeight+"kg"}}</span> <span class="red" v-else>{{scope.row.totalVolume+"m³/"+scope.row.totalWeight+"kg"}}</span>
</el-tooltip> </el-tooltip>
</template> </template>
</el-table-column> </el-table-column>
...@@ -402,19 +402,9 @@ export default { ...@@ -402,19 +402,9 @@ export default {
return tag return tag
}, },
exportSearch(){ exportSearch(){
this.exportExcel(exportExcel, this.queryParams, this.$t('异常订单')) exportExcel(this.queryParams).then(res => {
}, this.$message.success(this.$t('已加入导出队列,请稍后在下载日志中下载'))
// 通用导出函数 })
exportExcel(func, params, fileName = null){
this.exportLoading = true;
func(params).then(res => {
if(!fileName){
fileName = this.$t('订单')
}
this.$download.excel(res, fileName + '.xls');
}).finally(() => {
this.exportLoading = false
})
}, },
} }
} }
...@@ -430,4 +420,7 @@ export default { ...@@ -430,4 +420,7 @@ export default {
display:flex; display:flex;
align-items: center; align-items: center;
} }
.red{
color:#ff4949;
}
</style> </style>
...@@ -55,10 +55,10 @@ ...@@ -55,10 +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="!!scope.row.status" @click="del(scope.$index)">删除</el-button> <el-button type="text" v-if="scope.row.status === 0" @click="del(scope.$index)">删除</el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
...@@ -66,7 +66,7 @@ ...@@ -66,7 +66,7 @@
<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 type="primary" v-if="!processInstanceId" style="margin-right: 30px;" @click="submit">{{$t('提交')}}</el-button> <el-button type="primary" v-if="!processInstanceId" style="margin-right: 30px;" :disabled="!feeList.length" @click="submit">{{$t('提交')}}</el-button>
<el-button type="primary" v-if="processInstanceId" style="margin-right: 30px;" @click="goProcessDetail">{{$t('审核中')}}</el-button> <el-button type="primary" v-if="processInstanceId" style="margin-right: 30px;" @click="goProcessDetail">{{$t('审核中')}}</el-button>
<el-button type="primary" v-if="processInstanceId" 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>
...@@ -117,6 +117,11 @@ export default { ...@@ -117,6 +117,11 @@ export default {
selectedUsers:[] selectedUsers:[]
} }
}, },
computed:{
feeList(){
return this.list.filter(item => item.status === 0)
}
},
created() { created() {
this.getDictDatas(this.DICT_TYPE.AUDIT_STATUS).forEach( e =>{ this.getDictDatas(this.DICT_TYPE.AUDIT_STATUS).forEach( e =>{
this.STATUS[e.value] = e.label this.STATUS[e.value] = e.label
...@@ -135,9 +140,9 @@ export default { ...@@ -135,9 +140,9 @@ export default {
getFeeApplicationApproveByOrderId(this.orderId).then(res => { getFeeApplicationApproveByOrderId(this.orderId).then(res => {
if(res.data.formId){ if(res.data.formId){
this.processInstanceId = res.data.formId this.processInstanceId = res.data.formId
getBatchFeeByBusinessId(res.data.orderApprovalId).then(res => { /*getBatchFeeByBusinessId(res.data.orderApprovalId).then(res => {
this.list = res.data this.list = res.data
}) })*/
} }
}) })
}, },
...@@ -160,8 +165,15 @@ export default { ...@@ -160,8 +165,15 @@ export default {
}) })
}, },
submit(){ submit(){
// 判断费用申请是否有未填项
const errList = this.feeList.filter(item => {
return !item['feeType'] || !item['applicationFee'] || !item['applicationFeeCurrency'] || !item['payType']
})
if(errList.length){
return this.$message.error('请填写完整费用申请信息')
}
feeApplicationCreateBatch( { feeApplicationCreateBatch( {
orderFeeApplicationCreateReqVOList: this.list.filter(item => !item.status), orderFeeApplicationCreateReqVOList: this.feeList,
copyUserId:this.selectedUsers, copyUserId:this.selectedUsers,
orderId: this.orderId orderId: this.orderId
}).then(r=>{ }).then(r=>{
......
...@@ -267,7 +267,10 @@ ...@@ -267,7 +267,10 @@
<el-dropdown-menu slot="dropdown"> <el-dropdown-menu slot="dropdown">
<!-- 编辑 --> <!-- 编辑 -->
<template v-if=" <template v-if="
( scope.row.status < 12 || (scope.row.status == 12 && scope.row.shipmentState == 314) ) && !scope.row.abnormalState && exclude(scope.row.inWarehouseState, [204,205,206]) ( scope.row.status < 12 || (scope.row.status == 12 && scope.row.shipmentState == 314) ) &&
!scope.row.abnormalState &&
exclude(scope.row.inWarehouseState, [204,205,206]) &&
exclude(scope.row.shipmentState, [307, 407])
"> ">
<el-dropdown-item @click.native="handleUpdate(scope.row)" v-hasPermi="['ecw:order:edit']" >{{$t('编辑')}}</el-dropdown-item> <el-dropdown-item @click.native="handleUpdate(scope.row)" v-hasPermi="['ecw:order:edit']" >{{$t('编辑')}}</el-dropdown-item>
</template> </template>
......
...@@ -325,10 +325,13 @@ ...@@ -325,10 +325,13 @@
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item :label="$t('保费币种')"> <el-form-item :label="$t('保费币种')">
<el-select v-model="lineform.currencyUnit"> <el-select @change="modifyAmountUnit" v-model="lineform.currencyUnit">
<el-option v-for="(item) in currencyList" :disabled="item.status === 1" :label="$l(item, 'title')" :value="item.id"></el-option> <el-option v-for="(item) in currencyList" :disabled="item.status === 1" :label="$l(item, 'title')" :value="item.id"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item :label="$t('最小保价费金额')" >
<el-input-number :controls="false" v-model="lineform.minPrice" > </el-input-number>
</el-form-item>
<el-form-item :label="$t('是否支持控货')"> <el-form-item :label="$t('是否支持控货')">
<el-radio-group v-model="lineform.controlStatus"> <el-radio-group v-model="lineform.controlStatus">
<el-radio :label="0">支持</el-radio> <el-radio :label="0">支持</el-radio>
...@@ -554,8 +557,7 @@ export default { ...@@ -554,8 +557,7 @@ export default {
// 表单参数 // 表单参数
form: {checkList:[],}, form: {checkList:[],},
ladingform: {prefixCounter:null,titleZh:null,contentZh:null,account:null,acctArr:[]}, ladingform: {prefixCounter:null,titleZh:null,contentZh:null,account:null,acctArr:[]},
lineform: {otherService:[],isClientShow:1,makeBillNode:'2'}, lineform: {otherService:[],isClientShow:1,makeBillNode:'2',controlStatus:'0',currencyUnit:1,minPrice:0},
lineform: {otherService:[],isClientShow:1,makeBillNode:'2',controlStatus:'0',currencyUnit:1},
startName:'', startName:'',
destName:'', destName:'',
...@@ -590,17 +592,17 @@ export default { ...@@ -590,17 +592,17 @@ export default {
}, },
computed: { computed: {
checkedFn(){
return (val)=>{
return (Array.isArray(this.lineform.otherService) ? this.lineform.otherService : []).includes(val)
}
},
DICT_TYPE() { DICT_TYPE() {
return DICT_TYPE return DICT_TYPE
}, },
getDictDataL() { getDictDataL() {
return getDictDataL return getDictDataL
}, },
checkedFn(){
return (val)=>{
return (Array.isArray(this.lineform.otherService) ? this.lineform.otherService : []).includes(val)
}
},
isShowError() { isShowError() {
return (item) => { return (item) => {
if(item.id !== '5' && item.id !== '10') return true; if(item.id !== '5' && item.id !== '10') return true;
...@@ -698,6 +700,17 @@ export default { ...@@ -698,6 +700,17 @@ export default {
}, },
methods: { methods: {
getDictDataLabel, getDictDataLabel,
modifyAmountUnit(val){
if(val === 6){
this.lineform.minPrice = 900
} else if(val === 3){
this.lineform.minPrice = 10
}
else {
this.lineform.minPrice = 2
}
},
changeOtherService(val){ changeOtherService(val){
if(val === '2' && !( Array.isArray(this.lineform.otherService) ? this.lineform.otherService :[]).includes('10')){ if(val === '2' && !( Array.isArray(this.lineform.otherService) ? this.lineform.otherService :[]).includes('10')){
this.lineform.otherService.push('10'); this.lineform.otherService.push('10');
...@@ -884,6 +897,20 @@ export default { ...@@ -884,6 +897,20 @@ export default {
this.lineform.makeBillNode = row.makeBillNode; this.lineform.makeBillNode = row.makeBillNode;
this.lineform.currencyUnit = row.currencyUnit ? row.currencyUnit : 1 this.lineform.currencyUnit = row.currencyUnit ? row.currencyUnit : 1
this.lineform.controlStatus = row.controlStatus ? row.controlStatus : 0 this.lineform.controlStatus = row.controlStatus ? row.controlStatus : 0
this.lineform.minPrice = row.minPrice ? row.minPrice : 0
if(row.minPrice){
this.lineform.minPrice = row.minPrice;
}else {
if(this.lineform.currencyUnit === 6){
this.lineform.minPrice = 900
} else if(this.lineform.currencyUnit === 3 ){
this.lineform.minPrice = 10
} else {
this.lineform.minPrice = 2
}
}
console.log(row,'row') console.log(row,'row')
}, },
...@@ -899,7 +926,8 @@ export default { ...@@ -899,7 +926,8 @@ export default {
isClientShow:this.lineform.isClientShow, isClientShow:this.lineform.isClientShow,
makeBillNode:this.lineform.makeBillNode, makeBillNode:this.lineform.makeBillNode,
controlStatus:this.lineform.controlStatus, controlStatus:this.lineform.controlStatus,
currencyUnit:this.lineform.currencyUnit currencyUnit:this.lineform.currencyUnit,
minPrice:this.lineform.minPrice
}).then(res => { }).then(res => {
this.$modal.msgSuccess(this.$t("操作成功")); this.$modal.msgSuccess(this.$t("操作成功"));
this.getRouteList() this.getRouteList()
......
...@@ -42,7 +42,11 @@ ...@@ -42,7 +42,11 @@
<el-table-column :label="$t('操作')" align="center" class-name="small-padding fixed-width" width="100"> <el-table-column :label="$t('操作')" align="center" class-name="small-padding fixed-width" width="100">
<template slot-scope="scope" > <template slot-scope="scope" >
<el-button size="mini" type="text" icon="el-icon-edit" @click="handleDownload(scope.row)" <el-button size="mini" type="text" icon="el-icon-edit" @click="handleDownload(scope.row)"
v-hasPermi="['system:notice:update']">{{$t('下载')}}</el-button> v-hasPermi="['system:notice:update']" v-if="scope.row.status == 2">{{$t('下载')}}</el-button>
<el-button size="mini" type="text" icon="el-icon-edit" @click="handleRetry(scope.row)"
v-hasPermi="['system:notice:update']" v-if="scope.row.status == 3">{{$t('重试')}}</el-button>
<el-button size="mini" type="text" icon="el-icon-edit" @click="handleDel(scope.row)"
v-hasPermi="['system:notice:update']">{{$t('删除')}}</el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
...@@ -54,13 +58,11 @@ ...@@ -54,13 +58,11 @@
</template> </template>
<script> <script>
import {download, downloadFileArrayBuffer, downloadFileResponse, downloadPage} from "@/api/system/download"; import {deleteLog, download, downloadFileResponse, downloadPage, retry} from "@/api/system/download";
import {parseTime} from "../../../utils/ruoyi"; import {parseTime} from "../../../utils/ruoyi";
import Template from "@/views/cms/template/index.vue";
export default { export default {
name: "Download", name: "Download",
components: {Template},
data() { data() {
return { return {
// 遮罩层 // 遮罩层
...@@ -103,7 +105,18 @@ export default { ...@@ -103,7 +105,18 @@ export default {
this.loading = false; this.loading = false;
}) })
}, },
handleRetry(row){
retry(row.id).then(res => {
this.$message.success('重试已提交')
this.getList()
})
},
handleDel(row){
deleteLog(row.id).then(res => {
this.$message.success('删除成功')
this.getList()
})
},
/** 搜索按钮操作 */ /** 搜索按钮操作 */
handleQuery() { handleQuery() {
this.queryParams.page = 1; this.queryParams.page = 1;
......
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