Commit 7028fab8 authored by 我在何方's avatar 我在何方
parents 44869cb8 4baf3d01
<template> <template>
<div> <div>
<div class="filters mb-10" v-if="showFilter"> <div class="filters mb-10" v-if="showFilter">
<template v-if="!type">
{{$t('运输方式')}} {{$t('运输方式')}}
<dict-selector :type='DICT_TYPE.ECW_TRANSPORT_TYPE' v-model="transportType" :placeholder="$t('请选择运输方式')" :filter="transportFilter" style="width:150px" /> <dict-selector :type='DICT_TYPE.ECW_TRANSPORT_TYPE' v-model="transportType" :placeholder="$t('请选择运输方式')" :filter="transportFilter" style="width:150px" />
</template>
{{$t('始发地')}}: {{$t('始发地')}}:
<el-select :placeholder="$t('请选择始发地')" v-model="exportCity" clearable> <el-select :placeholder="$t('请选择始发地')" v-model="exportCity" clearable>
<el-option v-for="item in exportCityList" :key="item.id" :label="item.titleZh" :value="item.id" /> <el-option v-for="item in exportCityList" :key="item.id" :label="item.titleZh" :value="item.id" />
...@@ -14,7 +15,7 @@ ...@@ -14,7 +15,7 @@
<el-option v-for="item in importCityList" :key="item.id" :label="item.titleZh" :value="item.id" /> <el-option v-for="item in importCityList" :key="item.id" :label="item.titleZh" :value="item.id" />
</el-select> </el-select>
<template v-if="type == 'air'"> <template v-if="type != 'sea'">
{{$t('出货渠道')}}: {{$t('出货渠道')}}:
<el-select :placeholder="$t('请选择目渠道')" v-model="channelId" clearable> <el-select :placeholder="$t('请选择目渠道')" v-model="channelId" clearable>
<el-option v-for="item in channelList" :key="item.channelId" :label="item.nameZh" :value="item.channelId" /> <el-option v-for="item in channelList" :key="item.channelId" :label="item.nameZh" :value="item.channelId" />
......
...@@ -278,13 +278,14 @@ export const constantRoutes = [ ...@@ -278,13 +278,14 @@ export const constantRoutes = [
name: 'allocatedCustomerEdit', name: 'allocatedCustomerEdit',
meta: {title:'编辑客户',titleEn:'Edit Customer', icon: ''} meta: {title:'编辑客户',titleEn:'Edit Customer', icon: ''}
}, },
// {
// path: 'add-edit/:customerId(\\d+)',
// component: (resolve) => import('@/views/ecw/customer/edit'),
// props: true,
// name: 'customerEdit',
// meta: {title: '新建客户',titleEn:'New customer', icon: ''}
// },
{ {
path: 'add-edit/:customerId(\\d+)',
component: (resolve) => import('@/views/ecw/customer/edit'),
props: true,
name: 'customerEdit',
meta: {title: '新建客户',titleEn:'New customer', icon: ''}
},{
path: 'perfect/:customerId(\\d+)', path: 'perfect/:customerId(\\d+)',
component: (resolve) => import('@/views/ecw/customer/edit'), component: (resolve) => import('@/views/ecw/customer/edit'),
props: true, props: true,
......
...@@ -129,7 +129,7 @@ input, textarea{ ...@@ -129,7 +129,7 @@ input, textarea{
} }
.el-scrollbar__view{ .el-scrollbar__view{
overflow-x: hidden; /*overflow-x: hidden;*/
} }
.el-rate{ .el-rate{
......
<template>
<div class="shipping-update-error">
<div class="message-title">{{$t(`您确定撤销${cancelClearInfo.orderNo}已清关状态吗?`)}}</div>
<el-form ref="arrivalForm" :rules="rules" :model="cusClearanceObj" label-width="120px">
<el-form-item :label="$t('撤销理由')" prop="clEstTime">
<el-input v-model="cusClearanceObj.applyReason" type="textarea" :rows="4"></el-input>
</el-form-item>
</el-form>
<el-row class="operate-button">
<el-button type="primary" @click="onSubmit">{{$t('确定')}}</el-button>
<el-button @click="cancel">{{$t('取消')}}</el-button>
</el-row>
</div>
</template>
<script>
import { approvalCreate } from "@/api/ecw/boxSea";
export default {
name: "updateError",
inheritAttrs: false,
components: {},
props: {
shipmentObj: Object,
cancelClearInfo: Object,
},
data() {
return {
// 到港对象
cusClearanceObj: {},
// 校验
rules: {
applyReason: [
{ required: true, message: this.$t("必填"), trigger: "change" },
]
}
};
},
methods: {
onSubmit() {
this.$refs["arrivalForm"].validate((valid) => {
if (valid) {
approvalCreate({
shipmentId: this.shipmentObj.id,
approvalStatus: 0,
approvalType: 21,
orderId: this.cancelClearInfo.orderId,
applyReason: this.cusClearanceObj.applyReason
}).then(()=>{
this.$message.success("成功");
this.cancel()
})
}
});
},
cancel() {
this.$emit("closeDialog");
},
},
};
</script>
<style lang="scss" scoped>
.shipping-update-error {
.message-title {
text-align: center;
font-size: 20px;
margin: 0 20px 10px;
}
}
</style>
...@@ -108,6 +108,7 @@ ...@@ -108,6 +108,7 @@
<el-table-column prop="" :label="$t('操作')" align="center" width="120px"> <el-table-column prop="" :label="$t('操作')" align="center" width="120px">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button type="primary" size="small" :disabled="scope.row.abnormalDealStatus === 1" @click="()=>updateStatus('single', scope.row)">{{$t('更新状态')}}</el-button> <el-button type="primary" size="small" :disabled="scope.row.abnormalDealStatus === 1" @click="()=>updateStatus('single', scope.row)">{{$t('更新状态')}}</el-button>
<el-button type="primary" size="small" :disabled="shipmentObj.clStatus!=132&&shipmentObj.clearanceInfo&&(shipmentObj.clearanceInfo.clearanceOrderList.findIndex(ff=>ff.orderId == scope.row.orderId) !== -1)" @click="()=>cancleClear(scope.row)">{{$t('撤销清关申请')}}</el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
...@@ -213,6 +214,9 @@ ...@@ -213,6 +214,9 @@
<template v-if="dialogConfig.type === 'updateClear'"> <template v-if="dialogConfig.type === 'updateClear'">
<updateClear v-if="dialogConfig.visible" @closeDialog="closeDialog" :shipmentObj="shipmentObj" :clearInfo="clearInfo" /> <updateClear v-if="dialogConfig.visible" @closeDialog="closeDialog" :shipmentObj="shipmentObj" :clearInfo="clearInfo" />
</template> </template>
<template v-if="dialogConfig.type === 'cancelClear'">
<cancelClear v-if="dialogConfig.visible" @closeDialog="closeDialog" :shipmentObj="shipmentObj" :cancelClearInfo="cancelClearInfo" />
</template>
</el-dialog> </el-dialog>
</div> </div>
</template> </template>
...@@ -244,6 +248,7 @@ import editForm from "./editForm.vue"; ...@@ -244,6 +248,7 @@ import editForm from "./editForm.vue";
import updateError from "./updateError.vue"; import updateError from "./updateError.vue";
import updateArrival from "./updateArrival.vue"; import updateArrival from "./updateArrival.vue";
import updateClear from "./updateClear.vue"; import updateClear from "./updateClear.vue";
import cancelClear from "./cancelClear.vue";
import { listUser } from "@/api/system/user"; import { listUser } from "@/api/system/user";
export default { export default {
...@@ -257,7 +262,8 @@ export default { ...@@ -257,7 +262,8 @@ export default {
editForm, editForm,
updateError, updateError,
updateArrival, updateArrival,
updateClear updateClear,
cancelClear
}, },
created() { created() {
this.transportTypes = this.getDictDatas( this.transportTypes = this.getDictDatas(
...@@ -352,6 +358,7 @@ export default { ...@@ -352,6 +358,7 @@ export default {
clearInfo: { clearInfo: {
orderList: [] orderList: []
}, },
cancelClearInfo: {}
}; };
}, },
methods: { methods: {
...@@ -419,6 +426,11 @@ export default { ...@@ -419,6 +426,11 @@ export default {
this.$set(this.clearInfo, "type", type); this.$set(this.clearInfo, "type", type);
this.handleCommand("updateClear"); this.handleCommand("updateClear");
}, },
/* 更新清关状态 */
cancleClear(val) {
this.cancelClearInfo = val
this.handleCommand("cancelClear");
},
getErrorType() { getErrorType() {
for (const [key, value] of Object.entries(this.shipmentObj)) { for (const [key, value] of Object.entries(this.shipmentObj)) {
// 报关异常 customsHasAbnormal // 报关异常 customsHasAbnormal
...@@ -603,6 +615,10 @@ export default { ...@@ -603,6 +615,10 @@ export default {
this.$set(this.dialogConfig, "visible", true); this.$set(this.dialogConfig, "visible", true);
this.$set(this.dialogConfig, "type", "updateClear"); this.$set(this.dialogConfig, "type", "updateClear");
break; break;
case "cancelClear":
this.$set(this.dialogConfig, "visible", true);
this.$set(this.dialogConfig, "type", "cancelClear");
break;
} }
}, },
// 关闭弹框 // 关闭弹框
......
...@@ -16,6 +16,7 @@ ...@@ -16,6 +16,7 @@
reserve-keyword reserve-keyword
:filter-method="filterOrder" :filter-method="filterOrder"
:placeholder="$t('请输入订单号、提单号、唛头')" :placeholder="$t('请输入订单号、提单号、唛头')"
@change="selectOrderId"
> >
<el-option <el-option
v-for="(item) in statusOrderList" v-for="(item) in statusOrderList"
...@@ -60,7 +61,7 @@ import regError from "../../regError"; ...@@ -60,7 +61,7 @@ import regError from "../../regError";
import dayjs from "dayjs"; import dayjs from "dayjs";
import { arrivalCreate } from "@/api/ecw/boxSeaAir"; import { arrivalCreate } from "@/api/ecw/boxSeaAir";
import { shipmentOrderList } from "@/api/ecw/boxAir"; import { shipmentOrderList } from "@/api/ecw/boxAir";
import { formatDateStr, serviceMsg } from "../utils"; import { formatDateStr, serviceMsg, formatDate } from "../utils";
/** /**
* 到港 * 到港
...@@ -106,6 +107,7 @@ export default { ...@@ -106,6 +107,7 @@ export default {
dtRealHeadTimeFlag: false, dtRealHeadTimeFlag: false,
orderList: [], orderList: [],
orderListFilter: [], orderListFilter: [],
arrivalOrderList: []
}; };
}, },
created() { created() {
...@@ -121,7 +123,8 @@ export default { ...@@ -121,7 +123,8 @@ export default {
this.dtRealHeadTimeFlag = true this.dtRealHeadTimeFlag = true
} }
if(!this.airArrivalInfo.arriveType) this.$set(this.airArrivalInfo,'arriveType',0) if(!this.airArrivalInfo.arriveType) this.$set(this.airArrivalInfo,'arriveType',0)
this.$set(this.airArrivalInfo,'arriveOrderIdList',this.airArrivalInfo.arrivalOrderList.map(item=>{return item.orderId})) this.$set(this.airArrivalInfo,'arriveOrderIdList',[])
this.arrivalOrderList = this.$attrs.shipmentObj.airArrivalInfo?this.$attrs.shipmentObj.airArrivalInfo.arrivalOrderList:[]
shipmentOrderList(this.$attrs.shipmentObj.id).then(r=>{ shipmentOrderList(this.$attrs.shipmentObj.id).then(r=>{
this.orderList = r.data this.orderList = r.data
this.orderListFilter = r.data this.orderListFilter = r.data
...@@ -137,7 +140,7 @@ export default { ...@@ -137,7 +140,7 @@ export default {
tidanNo: item.tidanNo, tidanNo: item.tidanNo,
marks: item.marks, marks: item.marks,
} }
let index = this.airArrivalInfo.arrivalOrderList.findIndex(p=>p.orderId==item.orderId) let index = this.arrivalOrderList?this.arrivalOrderList.findIndex(p=>p.orderId==item.orderId):-1
if(index != -1){ if(index != -1){
json.arrival = this.$t('已到港') json.arrival = this.$t('已到港')
}else{ }else{
...@@ -162,21 +165,48 @@ export default { ...@@ -162,21 +165,48 @@ export default {
this.compareDate(this.airArrivalInfo.estTime, val); this.compareDate(this.airArrivalInfo.estTime, val);
}, },
// 确认到港时间 "airArrivalInfo.arriveType"(val) {
"arrivalObj.apConfirmTime"(val) { if(val == 1){
this.compareDate(this.getExpectedTime(), val); this.$set(this.airArrivalInfo, 'actSecondTime', null)
}, this.$set(this.airArrivalInfo, 'estTime', null)
this.$set(this.airArrivalInfo, 'actTime', null)
}else{
let oldData = { ...this.$attrs.shipmentObj[this.$attrs.currNode.voName] };
oldData = formatDateStr(
oldData,
["actSecondTime", "estTime", "actTime"],
"YYYY-MM-DD HH:mm:ss"
);
this.$set(this.airArrivalInfo, 'actSecondTime', oldData.actSecondTime)
this.$set(this.airArrivalInfo, 'estTime', oldData.estTime)
this.$set(this.airArrivalInfo, 'actTime', oldData.actTime)
}
}
}, },
methods: { methods: {
filterOrder(val){ filterOrder(val){
if(val != ''){ if(val != ''){
this.orderListFilter = this.orderList.filter(item=>{ this.orderListFilter = this.orderList.filter(item=>{
return item.orderNo.indexOf(val) > -1 || item.tidanNo.indexOf(val) > -1 || item.marks.indexOf(val) > -1 return item.orderNo&&item.orderNo.indexOf(val) > -1 || item.tidanNo&&item.tidanNo.indexOf(val) > -1 || item.marks&&item.marks.indexOf(val) > -1
}) })
}else{ }else{
this.orderListFilter = this.orderList this.orderListFilter = this.orderList
} }
}, },
selectOrderId(val) {
if (val.length == 1) {
let arr = this.arrivalOrderList.find((item) => item.orderId == val[0])
if (arr) {
this.$set(this.airArrivalInfo, 'actSecondTime', formatDate(arr.actSecondTime))
this.$set(this.airArrivalInfo, 'estTime', formatDate(arr.estTime))
this.$set(this.airArrivalInfo, 'actTime', formatDate(arr.actTime))
}
} else {
this.$set(this.airArrivalInfo, 'actSecondTime', null)
this.$set(this.airArrivalInfo, 'estTime', null)
this.$set(this.airArrivalInfo, 'actTime', null)
}
},
regCloseDialog(type) { regCloseDialog(type) {
this.dialogVisible = false; this.dialogVisible = false;
if (type === "error") { if (type === "error") {
......
...@@ -8,80 +8,67 @@ ...@@ -8,80 +8,67 @@
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
<el-form-item :label="$t('选择订单')" prop="clearanceOrderIdList" v-show="cusClearanceObj.clearanceType == 1"> <el-form-item :label="$t('选择订单')" prop="clearanceOrderIdList" v-show="cusClearanceObj.clearanceType == 1">
<el-select <el-select v-model="cusClearanceObj.clearanceOrderIdList" multiple filterable clearable reserve-keyword :filter-method="filterOrder" :placeholder="$t('请输入订单号、提单号、唛头')" @change="selectOrderId">
v-model="cusClearanceObj.clearanceOrderIdList" <el-option v-for="item in statusOrderList" :key="item.orderId" :label="item.orderNo + ' ' + item.clear + ' ' + item.arrival" :value="item.orderId"> </el-option>
multiple
filterable
clearable
reserve-keyword
:filter-method="filterOrder"
:placeholder="$t('请输入订单号、提单号、唛头')"
>
<el-option
v-for="(item) in statusOrderList"
:key="item.orderId"
:label="item.orderNo+' '+item.arrival"
:value="item.orderId">
</el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item :label="$t('已清关订单')" v-show="cusClearanceObj.clearanceType == 1"> <el-form-item :label="$t('已清关订单')" v-show="cusClearanceObj.clearanceType == 1">
<span v-for="order in cusClearanceObj.clearanceOrderList" :key="order.id">{{order.orderNo}} </span> <span v-for="order in cusClearanceObj.clearanceOrderList" :key="order.id">{{ order.orderNo }} </span>
</el-form-item> </el-form-item>
<el-card v-for="order in cusClearanceObj.clearanceOrderIdList" :key="order" style="margin: 20px;"> <div v-if="cusClearanceObj.clearanceOrderIdList.length > 0">
<el-form-item v-if="cusClearanceObj.clearanceType==1" :label="$t('订单号')"> <el-form ref="airArrivalForm" :rules="airArrivalrules" :model="airArrivalInfo" label-width="120px">
{{arrivalOrderList.find(item=>item.orderId==order).orderNo}} <el-form-item :label="$t('实际二程起飞时间')" prop="actSecondTime">
<el-date-picker type="datetime" :placeholder="$t('请选择日期')" v-model="airArrivalInfo.actSecondTime" value-format="yyyy-MM-dd HH:mm:ss"></el-date-picker>
</el-form-item> </el-form-item>
<el-form-item v-if="cusClearanceObj.clearanceType==1" :label="$t('实际二程起飞时间')" prop="actSecondTime"> <el-form-item :label="$t('预计到港时间')" prop="estTime">
{{formatDate(arrivalOrderList.find(item=>item.orderId==order).actSecondTime)}} <el-date-picker type="datetime" :placeholder="$t('请选择日期')" v-model="airArrivalInfo.estTime" value-format="yyyy-MM-dd HH:mm:ss"></el-date-picker>
</el-form-item> </el-form-item>
<el-form-item v-if="cusClearanceObj.clearanceType==1" :label="$t('预计到港时间')" prop="estTime"> <el-form-item :label="$t('实际到港时间')" prop="actTime">
{{formatDate(arrivalOrderList.find(item=>item.orderId==order).estTime)}} <el-date-picker type="datetime" :placeholder="$t('请选择日期')" v-model="airArrivalInfo.actTime" value-format="yyyy-MM-dd HH:mm:ss"></el-date-picker>
</el-form-item> </el-form-item>
<el-form-item v-if="cusClearanceObj.clearanceType==1" :label="$t('实际到港时间')" prop="actTime"> </el-form>
{{formatDate(arrivalOrderList.find(item=>item.orderId==order).actTime)}} </div>
</el-form-item>
</el-card>
<el-form-item :label="$t('预计清关时间')" prop="clEstTime"> <el-form-item :label="$t('预计清关时间')" prop="clEstTime">
<el-date-picker type="datetime" :placeholder="$t('请选择日期')" v-model="cusClearanceObj.clEstTime" value-format="yyyy-MM-dd HH:mm:ss"></el-date-picker> <el-date-picker type="datetime" :placeholder="$t('请选择日期')" v-model="cusClearanceObj.clEstTime" value-format="yyyy-MM-dd HH:mm:ss"></el-date-picker>
</el-form-item> </el-form-item>
<el-form-item :label="$t('清关时间')" prop="clClearTime"> <el-form-item :label="$t('清关时间')" prop="clClearTime">
<el-date-picker type="datetime" :placeholder="$t('请选择日期')" v-model="cusClearanceObj.clClearTime" value-format="yyyy-MM-dd HH:mm:ss"></el-date-picker> <el-date-picker type="datetime" :placeholder="$t('请选择日期')" v-model="cusClearanceObj.clClearTime" value-format="yyyy-MM-dd HH:mm:ss"></el-date-picker>
<p class="message-area" v-show="showMsg">{{$t('清关时间与预计时间不符,如有异常请登记')}}</p> <p class="message-area" v-show="showMsg">{{ $t('清关时间与预计时间不符,如有异常请登记') }}</p>
</el-form-item> </el-form-item>
</el-form> </el-form>
<el-row class="operate-button"> <el-row class="operate-button">
<el-button type="primary" @click="onSubmit(1)">{{$t('保存')}}</el-button> <el-button type="primary" @click="onSubmit(1)">{{ $t('保存') }}</el-button>
<el-button type="success" @click="onSubmit(2)">{{$t('提交')}}</el-button> <el-button type="success" @click="onSubmit(2)">{{ $t('提交') }}</el-button>
<el-button @click="cancel">{{$t('关闭')}}</el-button> <el-button @click="cancel">{{ $t('关闭') }}</el-button>
<el-button type="primary" @click="exceptionReg" :disabled="!showMsg">{{$t('异常登记')}}</el-button> <el-button type="primary" @click="exceptionReg" :disabled="!showMsg">{{ $t('异常登记') }}</el-button>
</el-row> </el-row>
<!-- 对话框 --> <!-- 对话框 -->
<el-dialog custom-class="shipping-dialog" :title="$t('票异常')" :visible.sync="dialogVisible" width="700px" :modal-append-to-body=false append-to-body destroy-on-close> <el-dialog custom-class="shipping-dialog" :title="$t('票异常')" :visible.sync="dialogVisible" width="700px" :modal-append-to-body="false" append-to-body destroy-on-close>
<regError @closeDialog="dialogVisible = false" v-bind="$attrs" /> <regError @closeDialog="dialogVisible = false" v-bind="$attrs" />
</el-dialog> </el-dialog>
</div> </div>
</template> </template>
<script> <script>
import regError from "../../regError"; import regError from '../../regError'
import dayjs from "dayjs"; import dayjs from 'dayjs'
import { clearanceCreate } from "@/api/ecw/boxSea"; import { clearanceCreate } from '@/api/ecw/boxSea'
import { shipmentOrderList } from "@/api/ecw/boxAir"; import { shipmentOrderList } from '@/api/ecw/boxAir'
import { formatDateStr, serviceMsg, formatDate } from "../utils"; import { formatDateStr, serviceMsg, formatDate } from '../utils'
import { updateOrderArrival } from '@/api/ecw/boxAir'
/** /**
* 清关 * 清关
*/ */
export default { export default {
name: "cusClearance", name: 'cusClearance',
inheritAttrs: false, inheritAttrs: false,
components: { components: {
regError, regError
}, },
data() { data() {
return { return {
...@@ -89,12 +76,12 @@ export default { ...@@ -89,12 +76,12 @@ export default {
cusClearanceObj: {}, cusClearanceObj: {},
// 校验 // 校验
rules: { rules: {
clEstTime: [ clEstTime: [{ required: true, message: this.$t('必填'), trigger: 'change' }],
{ required: true, message: this.$t("必填"), trigger: "change" }, clClearTime: [{ required: true, message: this.$t('必填'), trigger: 'change' }]
], },
clClearTime: [ airArrivalrules: {
{ required: true, message: this.$t("必填"), trigger: "change" }, actSecondTime: [{ required: true, message: this.$t('必填'), trigger: 'change' }],
], actTime: [{ required: true, message: this.$t('必填'), trigger: 'change' }]
}, },
// 弹窗配置 // 弹窗配置
dialogVisible: false, dialogVisible: false,
...@@ -102,48 +89,66 @@ export default { ...@@ -102,48 +89,66 @@ export default {
showMsg: false, showMsg: false,
orderList: [], orderList: [],
orderListFilter: [], orderListFilter: [],
arrivalOrderList: [] arrivalOrderList: [],
}; airArrivalInfo: {}
}
}, },
created() { created() {
const voName = this.$attrs.currNode.voName; const voName = this.$attrs.currNode.voName
let oldData = { ...this.$attrs.shipmentObj[voName] }; let oldData = { ...this.$attrs.shipmentObj[voName] }
oldData = formatDateStr(oldData, ["clEstTime"]); oldData = formatDateStr(oldData, ['clEstTime'])
oldData = formatDateStr(oldData, ["clClearTime"], "YYYY-MM-DD HH:mm:ss"); oldData = formatDateStr(oldData, ['clClearTime'], 'YYYY-MM-DD HH:mm:ss')
this.cusClearanceObj = oldData; this.cusClearanceObj = oldData
if(!this.cusClearanceObj.clearanceType) this.$set(this.cusClearanceObj,'clearanceType',0) if (!this.cusClearanceObj.clearanceType) this.$set(this.cusClearanceObj, 'clearanceType', 0)
this.$set(this.cusClearanceObj,'clearanceOrderIdList',this.cusClearanceObj.clearanceOrderList.map(item=>{return item.orderId})) this.$set(this.cusClearanceObj, 'clearanceOrderIdList', [])
this.arrivalOrderList = this.$attrs.shipmentObj.airArrivalInfo.arrivalOrderList if (this.$attrs.shipmentObj.airArrivalInfo.arrivalOrderList) this.arrivalOrderList = this.$attrs.shipmentObj.airArrivalInfo.arrivalOrderList
shipmentOrderList(this.$attrs.shipmentObj.id).then(r=>{ shipmentOrderList(this.$attrs.shipmentObj.id).then((r) => {
this.orderList = r.data this.orderList = r.data
this.orderListFilter = r.data this.orderListFilter = r.data
}) })
}, },
watch: { watch: {
// 预计清关时间 // 预计清关时间
"cusClearanceObj.clEstTime"(val) { 'cusClearanceObj.clEstTime'(val) {
this.compareDate(val, this.cusClearanceObj.clClearTime); this.compareDate(val, this.cusClearanceObj.clClearTime)
}, },
// 清关时间 // 清关时间
"cusClearanceObj.clClearTime"(val) { 'cusClearanceObj.clClearTime'(val) {
this.compareDate(this.cusClearanceObj.clEstTime, val); this.compareDate(this.cusClearanceObj.clEstTime, val)
}, },
'cusClearanceObj.clearanceType'(val) {
if (val == 1) {
this.$set(this.cusClearanceObj, 'clEstTime', null)
this.$set(this.cusClearanceObj, 'clClearTime', null)
} else {
let oldData = { ...this.$attrs.shipmentObj[this.$attrs.currNode.voName] }
oldData = formatDateStr(oldData, ['clEstTime', 'clClearTime'], 'YYYY-MM-DD HH:mm:ss')
this.$set(this.cusClearanceObj, 'clClearTime', oldData.clClearTime)
this.$set(this.cusClearanceObj, 'clEstTime', oldData.clEstTime)
}
}
}, },
computed: { computed: {
statusOrderList(){ statusOrderList() {
let data = [] let data = []
this.orderListFilter.forEach(item=>{ this.orderListFilter.forEach((item) => {
let json = { let json = {
orderId: item.orderId, orderId: item.orderId,
orderNo: item.orderNo, orderNo: item.orderNo,
tidanNo: item.tidanNo, tidanNo: item.tidanNo,
marks: item.marks, marks: item.marks
} }
let index = this.cusClearanceObj.clearanceOrderList.findIndex(p=>p.orderId==item.orderId) let clearindex = this.cusClearanceObj.clearanceOrderList ? this.cusClearanceObj.clearanceOrderList.findIndex((p) => p.orderId == item.orderId) : -1
if(index != -1){ if (clearindex != -1) {
json.arrival = this.$t('已清关') json.clear = this.$t('已清关')
}else{ } else {
json.arrival = this.$t('未清关') json.clear = this.$t('未清关')
}
let arrivalindex = this.arrivalOrderList ? this.arrivalOrderList.findIndex((p) => p.orderId == item.orderId) : -1
if (arrivalindex != -1) {
json.arrival = this.$t('已到港')
} else {
json.arrival = this.$t('未到港')
} }
data.push(json) data.push(json)
}) })
...@@ -152,63 +157,98 @@ export default { ...@@ -152,63 +157,98 @@ export default {
}, },
methods: { methods: {
formatDate, formatDate,
filterOrder(val){ filterOrder(val) {
if(val != ''){ if (val != '') {
this.orderListFilter = this.orderList.filter(item=>{ this.orderListFilter = this.orderList.filter((item) => {
return item.orderNo.indexOf(val) > -1 || item.tidanNo.indexOf(val) > -1 || item.marks.indexOf(val) > -1 return item.orderNo&&item.orderNo.indexOf(val) > -1 || item.tidanNo&&item.tidanNo.indexOf(val) > -1 || item.marks&&item.marks.indexOf(val) > -1
}) })
}else{ } else {
this.orderListFilter = this.orderList this.orderListFilter = this.orderList
} }
}, },
selectOrderId(val) {
if (val.length == 1) {
let arr = this.arrivalOrderList.find((item) => item.orderId == val[0])
if (arr) {
this.$set(this.airArrivalInfo, 'actSecondTime', formatDate(arr.actSecondTime))
this.$set(this.airArrivalInfo, 'estTime', formatDate(arr.estTime))
this.$set(this.airArrivalInfo, 'actTime', formatDate(arr.actTime))
}
} else {
this.$set(this.airArrivalInfo, 'actSecondTime', null)
this.$set(this.airArrivalInfo, 'estTime', null)
this.$set(this.airArrivalInfo, 'actTime', null)
}
},
getClAgent(type) { getClAgent(type) {
const agentId = this.$attrs.shipmentObj.agentInfo.agentId; const agentId = this.$attrs.shipmentObj.agentInfo.agentId
if (type === "label") { if (type === 'label') {
const selected = this.$attrs.allSupplier.find( const selected = this.$attrs.allSupplier.find((item) => item.id === agentId)
(item) => item.id === agentId return this.$l(selected, 'company') ?? agentId
); }
return this.$l(selected, "company") ?? agentId; return agentId
}
return agentId;
}, },
// 时间比较 // 时间比较
compareDate(clEstTime, clClearTime) { compareDate(clEstTime, clClearTime) {
this.showMsg = false; this.showMsg = false
let date1 = null, let date1 = null,
date2 = null; date2 = null
if (clEstTime) date1 = dayjs(clEstTime); if (clEstTime) date1 = dayjs(clEstTime)
if (clClearTime) date2 = dayjs(clClearTime); if (clClearTime) date2 = dayjs(clClearTime)
if (date1 && date2 && !date2.isSame(date1)) { if (date1 && date2 && !date2.isSame(date1)) {
this.showMsg = true; this.showMsg = true
} }
}, },
// 异常登记 // 异常登记
exceptionReg() { exceptionReg() {
this.dialogVisible = true; this.dialogVisible = true
}, },
/** 提交 */ /** 提交 */
onSubmit(operateType) { onSubmit(operateType) {
this.$refs["cusClearanceForm"].validate((valid) => { this.$refs['cusClearanceForm'].validate((valid) => {
if (valid) { if (valid) {
if (this.cusClearanceObj.clearanceType == 1) {
this.$refs['airArrivalForm'].validate((arrvalid) => {
if (arrvalid) {
updateOrderArrival({
...this.airArrivalInfo,
shipmentId: this.$attrs.shipmentObj.id,
orderIdList: this.cusClearanceObj.clearanceOrderIdList
}).then(() => {
clearanceCreate({ clearanceCreate({
...this.cusClearanceObj, ...this.cusClearanceObj,
shipmentId: this.$attrs.shipmentObj.id, shipmentId: this.$attrs.shipmentObj.id,
clAgentId: this.getClAgent(), clAgentId: this.getClAgent(),
operateType, operateType
}).then((res) => { }).then((res) => {
serviceMsg(res, this).then(() => { serviceMsg(res, this).then(() => {
this.cancel("submit"); this.cancel('submit')
}); })
}); })
})
} }
}); })
} else {
clearanceCreate({
...this.cusClearanceObj,
shipmentId: this.$attrs.shipmentObj.id,
clAgentId: this.getClAgent(),
operateType
}).then((res) => {
serviceMsg(res, this).then(() => {
this.cancel('submit')
})
})
}
}
})
}, },
/** 取消 */ /** 取消 */
cancel(type) { cancel(type) {
this.$emit("closeDialog", type); this.$emit('closeDialog', type)
}, }
}, }
}; }
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
......
...@@ -254,7 +254,7 @@ ...@@ -254,7 +254,7 @@
</div> </div>
<div class="table-button"> <div class="table-button">
<el-button v-if="item.relateOrderList" type="primary" size="small" style="margin-right: 20px;" @click="getRelationOrder(item)">{{$t('关联订单')}}</el-button> <el-button v-if="item.relateOrderList" type="primary" size="small" style="margin-right: 20px;" @click="getRelationOrder(item)">{{$t('关联订单')}}</el-button>
<el-button v-if="preList.sectionGoodList" type="success" size="small" :disabled="isAudit" @click="handleGoods('all',item,preList.sectionGoodList[0])">{{$t('分拣')}}</el-button> <el-button v-if="preList.sectionGoodList&&item.airShipment==4" type="success" size="small" :disabled="isAudit" @click="handleGoods('all',item,preList.sectionGoodList[0])">{{$t('分拣')}}</el-button>
</div> </div>
</el-row> </el-row>
<el-table v-loading="toBePreLoading" :data="item.boxOrderItemList" border show-summary :summary-method="getSummaries"> <el-table v-loading="toBePreLoading" :data="item.boxOrderItemList" border show-summary :summary-method="getSummaries">
...@@ -284,7 +284,9 @@ ...@@ -284,7 +284,9 @@
</el-table-column> </el-table-column>
<el-table-column :label="$t('包装类型')" align="center" prop=""> <el-table-column :label="$t('包装类型')" align="center" prop="">
<template slot-scope="scope"> <template slot-scope="scope">
<dict-tag :type="DICT_TYPE.ECW_PACKAGING_TYPE" :value="scope.row.warehouseInInfoVO && scope.row.warehouseInInfoVO.unit" /> <span v-for="(unit,index) in scope.row.warehouseInInfoVO && scope.row.warehouseInInfoVO.units.split(',')" :key="index">
<dict-tag :type="DICT_TYPE.ECW_PACKAGING_TYPE" :value="unit" />
</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('材质')" align="center" prop="material">{{ $t('') }}<template slot-scope="scope"> <el-table-column :label="$t('材质')" align="center" prop="material">{{ $t('') }}<template slot-scope="scope">
......
...@@ -579,7 +579,7 @@ import MemberSelector from '@/components/MemberSelector' ...@@ -579,7 +579,7 @@ import MemberSelector from '@/components/MemberSelector'
import {getCurrencyList} from "@/api/ecw/currency"; import {getCurrencyList} from "@/api/ecw/currency";
export default { export default {
name: "edit", name: "EcwCustomerEdit",
components: { components: {
Template, Template,
......
...@@ -159,9 +159,9 @@ export default { ...@@ -159,9 +159,9 @@ export default {
// 执行导出 // 执行导出
this.$modal.confirm(this.$t('是否确认导出间接客户数据项?')).then(() => { this.$modal.confirm(this.$t('是否确认导出间接客户数据项?')).then(() => {
this.exportLoading = true; this.exportLoading = true;
return indirectCustomerExportExcel(params); return indirectCustomerExportExcel();
}).then(response => { }).then(response => {
this.$download.excel(response, '间接客户列表.xls'); this.$message.success(this.$t('已加入导出队列,请稍后在下载日志中下载'))
this.exportLoading = false; this.exportLoading = false;
}).catch(() => {}); }).catch(() => {});
}, },
......
...@@ -73,7 +73,7 @@ ...@@ -73,7 +73,7 @@
<span>{{ getShipChannelName(scope.row.shippingChannel) }}</span> <span>{{ getShipChannelName(scope.row.shippingChannel) }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('已完成方数')" align="center" prop="completeCubeNum"/> <el-table-column :label="$t('已完成目标值')" align="center" prop="completeCubeNum"/>
<el-table-column :label="$t('完成比例')" align="center"> <el-table-column :label="$t('完成比例')" align="center">
<template slot-scope="scope"> <template slot-scope="scope">
<span>{{ (scope.row.completeCubeNum/scope.row.cubeNum*100).toFixed(2)+'%' }}</span> <span>{{ (scope.row.completeCubeNum/scope.row.cubeNum*100).toFixed(2)+'%' }}</span>
......
...@@ -73,7 +73,7 @@ ...@@ -73,7 +73,7 @@
<span>{{ getShipChannelName(scope.row.shippingChannel) }}</span> <span>{{ getShipChannelName(scope.row.shippingChannel) }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('已完成方数')" align="center" prop="completeCubeNum"/> <el-table-column :label="$t('已完成目标值')" align="center" prop="completeCubeNum"/>
<el-table-column :label="$t('完成比例')" align="center"> <el-table-column :label="$t('完成比例')" align="center">
<template slot-scope="scope"> <template slot-scope="scope">
<span>{{ (scope.row.completeCubeNum/scope.row.cubeNum*100).toFixed(2)+'%' }}</span> <span>{{ (scope.row.completeCubeNum/scope.row.cubeNum*100).toFixed(2)+'%' }}</span>
......
...@@ -71,9 +71,7 @@ ...@@ -71,9 +71,7 @@
<el-descriptions-item :label="$t('运输方式')" > <el-descriptions-item :label="$t('运输方式')" >
<dict-tag :type="DICT_TYPE.ECW_TRANSPORT_TYPE" :value="order.transportId" /> <dict-tag :type="DICT_TYPE.ECW_TRANSPORT_TYPE" :value="order.transportId" />
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item v-if="getDictData(DICT_TYPE.ECW_TRANSPORT_TYPE, order.transportId).cssClass == 'channel'":label="$t('出货渠道')" > <el-descriptions-item v-if="getDictData(DICT_TYPE.ECW_TRANSPORT_TYPE, order.transportId).cssClass == 'channel'":label="$t('出货渠道')" >{{channelName}}</el-descriptions-item>
{{order.channelName}}
</el-descriptions-item>
</el-descriptions> </el-descriptions>
</el-card> </el-card>
...@@ -108,12 +106,6 @@ ...@@ -108,12 +106,6 @@
<el-descriptions-item :label="$t('单证报关')"> <el-descriptions-item :label="$t('单证报关')">
<dict-tag :type="DICT_TYPE.ECW_CUSTOMS_TYPE" :value="order.customsType" /> <dict-tag :type="DICT_TYPE.ECW_CUSTOMS_TYPE" :value="order.customsType" />
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item :label="$t('关联报价单')">
<router-link v-if="offerData" :to="{path: '/offer/detail',query: {offerId: offerData.offerId}}" class="link-type">
<span>{{ offerData.number }}</span>
</router-link>
<span v-else>/</span>
</el-descriptions-item>
</el-descriptions> </el-descriptions>
<el-descriptions class="mr-10" border :column="2" :class="showMore?'showInfo':'hiddenInfo'" :labelStyle="{width:'110px'}" :contentStyle="{width:'150px'}"> <el-descriptions class="mr-10" border :column="2" :class="showMore?'showInfo':'hiddenInfo'" :labelStyle="{width:'110px'}" :contentStyle="{width:'150px'}">
<el-descriptions-item :label="$t('出单方式')"> <el-descriptions-item :label="$t('出单方式')">
...@@ -156,36 +148,6 @@ ...@@ -156,36 +148,6 @@
</el-descriptions> </el-descriptions>
</el-card> </el-card>
<el-card class="card" v-if="[3,4].indexOf(+order.transportId) > -1">
<el-descriptions class="mr-10" border :title="$t('空运专线')" :column="2" :labelStyle="{width:'110px'}" :contentStyle="{width:'150px'}">
<el-descriptions-item :label="$t('是否双清')">
<dict-tag :type="DICT_TYPE.ECW_DOUBLE_CLEAR" :value="order.doubleClear" />
</el-descriptions-item>
<el-descriptions-item :label="$t('航空公司')">
{{ order.companyName||'' }}
</el-descriptions-item>
<el-descriptions-item :label="$t('清关证书')">
{{order.isSingleTicketTransport? this.$t('是'):this.$t('否')}}
</el-descriptions-item>
<el-descriptions-item :label="$t('清关证书备注')">
{{ order.customsClearCertRemarks }}
</el-descriptions-item>
<el-descriptions-item :label="$t('是否拆包')">
{{order.isUnpack? this.$t('是'):this.$t('否')}}
</el-descriptions-item>
<el-descriptions-item :label="$t('单票立刻转运')">
{{order.isSingleTicketTransport? this.$t('是'):this.$t('否')}}
</el-descriptions-item>
<el-descriptions-item :label="$t('特殊要求')">
<template v-if="order.packageType">
<dict-tag v-for="packageType in order.packageType.split(',').filter(item => !!item)" class="mr-10" :key="packageType" :type="DICT_TYPE.ORDER_SPECIAL_NEEDS" :value="packageType" />
</template>
</el-descriptions-item>
<el-descriptions-item :label="$t('特殊要求备注')">
{{order.packageRemarks}}
</el-descriptions-item>
</el-descriptions>
</el-card>
<el-card class="card"> <el-card class="card">
<el-tabs v-model="activeName"> <el-tabs v-model="activeName">
<el-tab-pane :label="$t('货物详情')" name="first"> <el-tab-pane :label="$t('货物详情')" name="first">
...@@ -201,11 +163,6 @@ ...@@ -201,11 +163,6 @@
<dict-tag v-else :type="DICT_TYPE.ECW_IS_BRAND" :value="row.brandType" /> <dict-tag v-else :type="DICT_TYPE.ECW_IS_BRAND" :value="row.brandType" />
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="brand" :label="$t('特性')" width="90px">
<template slot-scope="{row}">
{{showAttrText(row.warehouseInInfoVO ? row.warehouseInProdAttrIds : row.prodAttrIds)}}
</template>
</el-table-column>
<el-table-column prop="num" :label="$t('填单件数')" width="90px"/> <el-table-column prop="num" :label="$t('填单件数')" width="90px"/>
<el-table-column prop="sumNum" :label="$t('入仓件数')" width="90px"> <el-table-column prop="sumNum" :label="$t('入仓件数')" width="90px">
<template slot-scope="{row}"> <template slot-scope="{row}">
...@@ -252,7 +209,7 @@ ...@@ -252,7 +209,7 @@
<template v-if="!row.originalSeaFreight">{{ $t('未报价') }}</template> <template v-if="!row.originalSeaFreight">{{ $t('未报价') }}</template>
<el-link type="primary" @click="showFeeDetail(row, 'clearance')" v-else>{{$t('全包价')}} {{row.oneSeaFreight}} {{currencyMap[row.seaFreightCurrency]}} / {{unitMap[row.seaFreightVolume]}}</el-link> <el-link type="primary" @click="showFeeDetail(row, 'clearance')" v-else>{{$t('全包价')}} {{row.oneSeaFreight}} {{currencyMap[row.seaFreightCurrency]}} / {{unitMap[row.seaFreightVolume]}}</el-link>
</template> </template>
<template v-else-if="!row.originalSeaFreight && !row.oneClearanceFreight">{{ $t('未报价') }}</template> <template v-else-if="!row.originalSeaFreight && !row.originalClearanceFreight">{{ $t('未报价') }}</template>
<template v-else> <template v-else>
<el-link type="primary" @click="showFeeDetail(row, 'freight')"> <el-link type="primary" @click="showFeeDetail(row, 'freight')">
{{$t('运费')}}{{row.oneSeaFreight}} {{currencyMap[row.seaFreightCurrency]}} / {{unitMap[row.seaFreightVolume]}} {{$t('运费')}}{{row.oneSeaFreight}} {{currencyMap[row.seaFreightCurrency]}} / {{unitMap[row.seaFreightVolume]}}
...@@ -281,7 +238,7 @@ ...@@ -281,7 +238,7 @@
</el-tab-pane> </el-tab-pane>
<el-tab-pane :label="$t('订单动态')" name="second"> <el-tab-pane :label="$t('订单动态')" name="second">
<el-timeline v-if="order.orderTimeVOList && order.orderTimeVOList.length" :reverse="true"> <el-timeline v-if="order.orderTimeVOList && order.orderTimeVOList.length" :reverse="true">
<el-timeline-item v-for="(activity, index) in order.orderTimeVOList" :key="index" :timestamp="parseTime(activity.businessTime)"> <el-timeline-item v-for="(activity, index) in order.orderTimeVOList" :key="index" :timestamp="activity.timestamp">
{{ $l(activity, 'title') }} {{ $l(activity, 'title') }}
<div>{{$l(activity, 'remarks')}}</div> <div>{{$l(activity, 'remarks')}}</div>
</el-timeline-item> </el-timeline-item>
...@@ -310,7 +267,7 @@ ...@@ -310,7 +267,7 @@
<dict-tag :type="DICT_TYPE.ECW_TRANSPORT_TYPE" :value="order.transportId" /> <dict-tag :type="DICT_TYPE.ECW_TRANSPORT_TYPE" :value="order.transportId" />
</el-table-column> </el-table-column>
<el-table-column :label="$t('出货渠道')"> <el-table-column :label="$t('出货渠道')">
{{order.channelName}} {{channelName}}
</el-table-column> </el-table-column>
<el-table-column :label="$t('始发地')" prop="orderNo"> <el-table-column :label="$t('始发地')" prop="orderNo">
{{$l(departure, 'title') || '-'}} {{$l(departure, 'title') || '-'}}
...@@ -398,7 +355,7 @@ ...@@ -398,7 +355,7 @@
<print-warehouse-receipt v-if="showWarehouseReceipt" :order-id="order.orderId" @close="showWarehouseReceipt=false" /> <print-warehouse-receipt v-if="showWarehouseReceipt" :order-id="order.orderId" @close="showWarehouseReceipt=false" />
<print-lading-bill v-if="showLadingBill" :order-id="order.orderId" :transport-type="order.transportId" @close="showLadingBill=false" /> <print-lading-bill v-if="showLadingBill" :order-id="order.orderId" :transport-type="order.transportId" @close="showLadingBill=false" />
<warehouse-detail :order="order" @openPackHistory="openPackHistory" :orderItemId="showWarehouseInItemId" v-if="showWarehouseInItemId" @close="showWarehouseInItemId=null" /> <warehouse-detail :order="order" :orderItemId="showWarehouseInItemId" v-if="showWarehouseInItemId" @close="showWarehouseInItemId=null" />
<el-dialog :title="$t('付款人')" :visible.sync="showDarweeDialog" v-if="order && order.customDraweeVOList"> <el-dialog :title="$t('付款人')" :visible.sync="showDarweeDialog" v-if="order && order.customDraweeVOList">
<el-table :data="order.customDraweeVOList" v-if="order.drawee==3" > <el-table :data="order.customDraweeVOList" v-if="order.drawee==3" >
<el-table-column :label="$t('费用类型')" prop="label" width="200px"> <el-table-column :label="$t('费用类型')" prop="label" width="200px">
...@@ -426,12 +383,7 @@ ...@@ -426,12 +383,7 @@
</div> </div>
</el-col> </el-col>
<el-col :span="12" v-if="feeDetail.charging != 1"> <el-col :span="12" v-if="feeDetail.charging != 1">
<div> <div>{{$t('清关费')}}</div>
{{$t('清关费')}}
<template v-if="order.transportId == 3 || order.transportId == 4">
{{$t('来自{source}', {source: feeDetail.airClearanceSource + feeDetail.sourceName})}}
</template>
</div>
<div v-for="item in feeDetail.clearance"> <div v-for="item in feeDetail.clearance">
{{item.label}}: {{item.value}} {{item.label}}: {{item.value}}
<template v-if="item.currency"> <template v-if="item.currency">
...@@ -441,26 +393,26 @@ ...@@ -441,26 +393,26 @@
</el-col> </el-col>
</el-row> </el-row>
<div v-if="feeDetail && feeDetail.coupons && feeDetail.coupons.length" class="page-title">{{$t('优惠详情')}}</div> <div v-if="feeDetail && feeDetail.coupons && feeDetail.coupons.length" class="page-title">优惠详情</div>
<el-table v-if="feeDetail && feeDetail.coupons && feeDetail.coupons.length" :data="feeDetail.coupons"> <el-table v-if="feeDetail && feeDetail.coupons && feeDetail.coupons.length" :data="feeDetail.coupons">
<el-table-column :label="$t('优惠ID')" prop="couponId"></el-table-column> <el-table-column label="优惠ID" prop="couponId"></el-table-column>
<el-table-column :label="$t('优惠名称')"> <el-table-column label="优惠名称">
<template slot-scope="{row}"> <template slot-scope="{row}">
{{ $l(row, 'title') }} {{ $l(row, 'title') }}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('类型')"> <el-table-column label="类型">
<template slot-scope="{row}"> <template slot-scope="{row}">
<dict-tag :type="DICT_TYPE.ECW_COUPON_TYPE" :value="row.type" ></dict-tag> <dict-tag :type="DICT_TYPE.ECW_COUPON_TYPE" :value="row.type" ></dict-tag>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('运费优惠')"> <el-table-column label="运费优惠">
<template slot-scope="{row}"> <template slot-scope="{row}">
{{ row.freightReduceAmount}} {{ row.freightReduceAmount}}
{{currencyMap[row.freightReduceCurrencyId]}} {{currencyMap[row.freightReduceCurrencyId]}}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('清关费优惠')"> <el-table-column label="清关费优惠">
<template slot-scope="{row}"> <template slot-scope="{row}">
{{ row.clearanceReduceAmount}} {{ row.clearanceReduceAmount}}
{{ currencyMap[row.clearanceReduceCurrencyId] }} {{ currencyMap[row.clearanceReduceCurrencyId] }}
...@@ -471,10 +423,6 @@ ...@@ -471,10 +423,6 @@
<!--日志详情--> <!--日志详情-->
<operate-log-detail v-if="showLogDetailId" :log-id="showLogDetailId" @close="showLogDetailId=null"></operate-log-detail> <operate-log-detail v-if="showLogDetailId" :log-id="showLogDetailId" @close="showLogDetailId=null"></operate-log-detail>
<!--打包历史-->
<pack-history v-if="shopPackId" :order ="order" :orderItemId="shopPackId" @showPackDetail="showPackDetail" @close="shopPackId=null"></pack-history>
<!--打包历史详情-->
<pack-history-detail v-if="packAfterData" :order="order" :packAfterData="packAfterData" :orderItemId="showWarehouseInItemId" @close="packAfterData=null"></pack-history-detail>
<!-- 报关资料 --> <!-- 报关资料 -->
<declaration-documents v-if="showDeclaration" :order-id="order.orderId" :order-no="order.orderNo" @close="showDeclaration=false" /> <declaration-documents v-if="showDeclaration" :order-id="order.orderId" :order-no="order.orderNo" @close="showDeclaration=false" />
<!--费用汇总--> <!--费用汇总-->
...@@ -489,7 +437,6 @@ ...@@ -489,7 +437,6 @@
<script> <script>
import {getOrder, operateLogPage} from '@/api/ecw/order' import {getOrder, operateLogPage} from '@/api/ecw/order'
import {getOfferCheck} from '@/api/ecw/offer'
import { getDictDatas, DICT_TYPE, getDictData } from '@/utils/dict'; import { getDictDatas, DICT_TYPE, getDictData } from '@/utils/dict';
import PrintWarehouseReceipt from './components/PrintWarehouseReceipt' import PrintWarehouseReceipt from './components/PrintWarehouseReceipt'
import PrintLadingBill from './components/PrintLadingBill' import PrintLadingBill from './components/PrintLadingBill'
...@@ -506,18 +453,12 @@ import OperateLogDetail from "@/views/ecw/order/components/OprateLogDetail"; ...@@ -506,18 +453,12 @@ import OperateLogDetail from "@/views/ecw/order/components/OprateLogDetail";
import DeclarationDocuments from './components/DeclarationDocuments'; import DeclarationDocuments from './components/DeclarationDocuments';
import ImageDisplay from "@/views/ecw/order/components/imageDisplay.vue"; import ImageDisplay from "@/views/ecw/order/components/imageDisplay.vue";
import FeeDetail from "@/views/ecw/order/components/FeeDetail.vue"; import FeeDetail from "@/views/ecw/order/components/FeeDetail.vue";
import PackHistory from './components/PackHistory';
import PackHistoryDetail from './components/PackHistoryDetail';
import {getSupplier, getSupplierPage} from '@/api/ecw/supplier'
import {formatTime} from "@/utils";
import {getProductAttrList} from "@/api/ecw/productAttr";
export default { export default {
name: "detail", name: "detail",
components: { components: {
DeclarationDocuments,
ImageDisplay, ImageDisplay,
OperateLogDetail, OperateLogDetail,
PrintWarehouseReceipt, PrintLadingBill, WarehouseDetail, WarehouseAreaSelect,PackHistory,PackHistoryDetail, PrintWarehouseReceipt, PrintLadingBill, WarehouseDetail, WarehouseAreaSelect,DeclarationDocuments,
FeeDetail FeeDetail
}, },
filters: { filters: {
...@@ -550,7 +491,7 @@ export default { ...@@ -550,7 +491,7 @@ export default {
currencyList: [], currencyList: [],
unitList:[], unitList:[],
feeList: [], feeList: [],
channel: null, channelName: '/',
region: '', region: '',
orderWarehouseIn: null, // 入仓详情 orderWarehouseIn: null, // 入仓详情
showWarehouseInItemId: null, // 当前显示的入仓 showWarehouseInItemId: null, // 当前显示的入仓
...@@ -562,14 +503,9 @@ export default { ...@@ -562,14 +503,9 @@ export default {
showText:this.$t('显示更多'), showText:this.$t('显示更多'),
showMore:false, showMore:false,
consigneeText:this.$t('更多'), consigneeText:this.$t('更多'),
showLogDetailId: null, // 显示日志详情的ID showLogDetailId: null, // 显示日志详情的ID,
shopPackId:null,//显示打包历史的ID
packAfterData:null,//显示打包历史详情
showDeclaration:false, //显示报关资料 showDeclaration:false, //显示报关资料
showFeeSummary: false, // 是否显示费用汇总 showFeeSummary: false, // 是否显示费用汇总
offerData:'', //关联报价单
// 特性列表
attrList: []
} }
}, },
computed:{ computed:{
...@@ -601,18 +537,6 @@ export default { ...@@ -601,18 +537,6 @@ export default {
return JSON.parse(this.order.departureVO.departure) return JSON.parse(this.order.departureVO.departure)
} }
return {} return {}
},
// 显示特性
showAttrText(){
return ids => {
if(!ids) return ''
ids = !Array.isArray(ids) ? ids.split(',') : ids
const attrMap = {}
this.attrList.forEach(item => {
attrMap[item.id] = this.$l(item, 'attrName')
})
return ids.map(id => attrMap[id]).join(',')
}
} }
}, },
watch:{ watch:{
...@@ -625,7 +549,7 @@ export default { ...@@ -625,7 +549,7 @@ export default {
} }
}, },
'order.channelId'(){ 'order.channelId'(){
// this.getChannel() this.getChannel()
}, },
'order.consigneeVO'(val){ 'order.consigneeVO'(val){
if(!val) return '-' if(!val) return '-'
...@@ -643,18 +567,12 @@ export default { ...@@ -643,18 +567,12 @@ export default {
if (this.$route.query.orderId) { if (this.$route.query.orderId) {
this.orderId = this.$route.query.orderId this.orderId = this.$route.query.orderId
this.getOrder(); this.getOrder();
this.getOfferNumber()
} }
getCurrencyList().then(res => this.currencyList = res.data) getCurrencyList().then(res => this.currencyList = res.data)
getUnitList().then(res => this.unitList = res.data) getUnitList().then(res => this.unitList = res.data)
getProductAttrList().then(response => {
this.attrList = response.data;
})
}, },
methods: { methods: {
parseTime,
formatTime,
checkPermi, // 检查权限 checkPermi, // 检查权限
// 获取储位名称 // 获取储位名称
getLocationName(locationArr){ getLocationName(locationArr){
...@@ -669,12 +587,6 @@ export default { ...@@ -669,12 +587,6 @@ export default {
handleChange(val){ handleChange(val){
this.showText = val.length>0? this.$t('隐藏') : this.$t('显示更多') this.showText = val.length>0? this.$t('隐藏') : this.$t('显示更多')
}, },
getAirCompany(){
getSupplier(this.order.airlineCompany).then(res => {
this.$set(this.order,'companyName',this.$l(res.data,'company'))
})
},
//订单信息显示更多 //订单信息显示更多
consigneeChange(){ consigneeChange(){
this.showMore = !this.showMore; this.showMore = !this.showMore;
...@@ -760,16 +672,7 @@ export default { ...@@ -760,16 +672,7 @@ export default {
label: this.$t('价格更新时间'), label: this.$t('价格更新时间'),
value: parseTime(row.updateTime) value: parseTime(row.updateTime)
}) })
this.feeDetail = { this.feeDetail = {freight, clearance, charging: row.charging, coupons: row.couponInfoVOList}
freight,
clearance,
charging:
row.charging,
coupons: row.couponInfoVOList,
airClearanceSource: row.airClearanceSource == 1 ? this.$t('商品') : this.$t('渠道'), // 空运清关费来源:1 商品 2 渠道
airClearanceInfo: JSON.parse(row.airClearanceInfo), //空运清关费来源数据详情,
sourceName: row.airClearanceSource == 1 ? this.$l(row, 'prodTitle') : this.order?.channelName
}
}, },
closeFeeDetail(){ closeFeeDetail(){
...@@ -783,7 +686,6 @@ export default { ...@@ -783,7 +686,6 @@ export default {
getOrder(that.orderId).then(response => { getOrder(that.orderId).then(response => {
that.order = response.data; that.order = response.data;
// this.loadBrand() // this.loadBrand()
if(that.order.airlineCompany) that.getAirCompany()
}); });
}, },
/* loadBrands(){ /* loadBrands(){
...@@ -800,12 +702,12 @@ export default { ...@@ -800,12 +702,12 @@ export default {
}) })
}) })
}, */ }, */
/*getChannel(){ getChannel(){
if(!this.order || !this.order.channelId || this.order.transportId == 1 || this.order.transportId == 2) return if(!this.order || !this.order.channelId || this.order.transportId == 1 || this.order.transportId == 2) return
getChannel(this.order.channelId).then(res => { getChannel(this.order.channelId).then(res => {
this.channel = res.data this.channelName = res.data.nameZh
}) })
},*/ },
loadFeeList(){ loadFeeList(){
getReceivableListByOrderId({id: this.orderId}).then(res => { getReceivableListByOrderId({id: this.orderId}).then(res => {
this.feeList = res.data this.feeList = res.data
...@@ -836,21 +738,6 @@ export default { ...@@ -836,21 +738,6 @@ export default {
parseLogNote(note){ parseLogNote(note){
if(!note) return [] if(!note) return []
return JSON.parse(note) return JSON.parse(note)
},
//查看打包历史
openPackHistory(){
this.shopPackId = this.showWarehouseInItemId
},
//查看打包历史详情
showPackDetail(packAfterData){
this.packAfterData = packAfterData
},
getOfferNumber() {
const that = this
getOfferCheck({ orderId: that.orderId }).then(response => {
that.offerData = response.data
})
} }
} }
}; };
......
...@@ -480,7 +480,6 @@ ...@@ -480,7 +480,6 @@
<!-- 打印入仓单 --> <!-- 打印入仓单 -->
<template v-if=" <template v-if="
exclude(scope.row.status, [0, 2]) && exclude(scope.row.status, [0, 2]) &&
exclude(scope.row.shipmentState, [320,322,323]) &&
exclude(scope.row.abnormalState, [5,6,7,8]) exclude(scope.row.abnormalState, [5,6,7,8])
"> ">
<el-dropdown-item @click.native="printWarehouseReceiptOrderId=scope.row.orderId" v-hasPermi="['ecw:order:warehouse_receipt']">{{$t('打印入仓单')}}</el-dropdown-item> <el-dropdown-item @click.native="printWarehouseReceiptOrderId=scope.row.orderId" v-hasPermi="['ecw:order:warehouse_receipt']">{{$t('打印入仓单')}}</el-dropdown-item>
......
...@@ -602,7 +602,7 @@ export default { ...@@ -602,7 +602,7 @@ export default {
this.getChannel() this.getChannel()
getWarehouseList().then(res => { getWarehouseList().then(res => {
this.tradeCityList = res.data this.tradeCityList = res.data
this.importCityList = this.tradeCityList.filter(item => item.type == 1) this.importCityList = this.tradeCityList.filter(item => item.tradeType == 1 || item.tradeType == 3)
}) })
if (this.$route.query.orderId) { if (this.$route.query.orderId) {
this.queryParams.orderId = this.$route.query.orderId this.queryParams.orderId = this.$route.query.orderId
......
...@@ -22,7 +22,7 @@ ...@@ -22,7 +22,7 @@
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
<el-form-item :label="$t('单价模式')" prop="priceType"> <el-form-item :label="$t('单价模式')" prop="priceType">
<dict-selector :type="DICT_TYPE.ECW_PRICE_TYPE" v-model="form.priceType" form-type="radio" /> <dict-selector :type="DICT_TYPE.ECW_PRICE_TYPE" v-model="form.priceType" form-type="radio" formatter='number' />
</el-form-item> </el-form-item>
<!--阶梯订单--> <!--阶梯订单-->
...@@ -210,6 +210,7 @@ export default { ...@@ -210,6 +210,7 @@ export default {
specialList: [], specialList: [],
priceStepList: [], priceStepList: [],
stepPrice: 0, stepPrice: 0,
priceType: null
// advanceStatus: 0, // advanceStatus: 0,
// needBook: 0, // needBook: 0,
// dayLimit: 10000 // dayLimit: 10000
...@@ -234,7 +235,9 @@ export default { ...@@ -234,7 +235,9 @@ export default {
computed: { computed: {
// 类型,默认海运sea,air表示空运 // 类型,默认海运sea,air表示空运
type(){ type(){
return this.$route.path.split(/[-_]/).pop() let type = this.$route.path.split(/[-_]/).pop()
if(type == 'air' || type == 'sea') return type
return null
}, },
// 默认运费的货币和体积单位 // 默认运费的货币和体积单位
currencyAndUnit(){ currencyAndUnit(){
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
<el-form ref="form" :model="form" :rules="rules" label-width="150px"> <el-form ref="form" :model="form" :rules="rules" label-width="150px">
<products-selector ref="productSelector" v-model="form.productIdList" show-all @setall="isAllProduct=$event" :default-ids="form.productIdList" class="mb-20" /> <products-selector ref="productSelector" v-model="form.productIdList" show-all @setall="isAllProduct=$event" :default-ids="form.productIdList" class="mb-20" />
<routers-selector v-model="selectedRoutes" :type="type" :show-filter="false" /> <routers-selector v-model="selectedRoutes" :type="type" />
<el-card style="margin-bottom: 10px"> <el-card style="margin-bottom: 10px">
<div slot="header" style="font-size:20px;"> <div slot="header" style="font-size:20px;">
......
...@@ -196,7 +196,7 @@ ...@@ -196,7 +196,7 @@
</div> </div>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="advanceStatus" :label="$t('询')" align="center" width="80"> <el-table-column prop="advanceStatus" :label="$t('询')" align="center" width="80">
<template slot-scope="scope"> <template slot-scope="scope">
<dict-tag :type="DICT_TYPE.NEED_ORDER_INQUIRY" :value="scope.row.needOrderInquiry"></dict-tag> <dict-tag :type="DICT_TYPE.NEED_ORDER_INQUIRY" :value="scope.row.needOrderInquiry"></dict-tag>
</template> </template>
...@@ -406,7 +406,8 @@ export default { ...@@ -406,7 +406,8 @@ export default {
AuditStatusEnum: AuditStatusEnum, AuditStatusEnum: AuditStatusEnum,
locationList: getDictDatas(DICT_TYPE.ECW_CONTAINER_LOCATION), locationList: getDictDatas(DICT_TYPE.ECW_CONTAINER_LOCATION),
// 查看更多阶梯价 // 查看更多阶梯价
showMoreStepPriceItem: null showMoreStepPriceItem: null,
entryPath: null
}; };
}, },
...@@ -545,6 +546,10 @@ export default { ...@@ -545,6 +546,10 @@ export default {
// if(!this.$route.query.product_id){ // if(!this.$route.query.product_id){
// return this.product = null // return this.product = null
// } // }
// 价格列表 跟 商品的价格列表,有时候商品价格列表的路由变动会导致价格列表也执行此处代码,所以做一个判断排除
// https://zentao.test.jdshangmen.com/bug-view-4928.html
if(this.$route.path != this.entryPath) return
let productId = this.product?.id let productId = this.product?.id
if(this.$route.name === 'ProductPrice'){ if(this.$route.name === 'ProductPrice'){
if(this.$route.query.product_id != productId){ if(this.$route.query.product_id != productId){
...@@ -562,6 +567,7 @@ export default { ...@@ -562,6 +567,7 @@ export default {
} }
}, },
created() { created() {
this.entryPath = this.$route.path
if(this.$route.query.product_type){ if(this.$route.query.product_type){
this.$set(this.queryParams, 'typeId', +this.$route.query.product_type); this.$set(this.queryParams, 'typeId', +this.$route.query.product_type);
} }
......
...@@ -19,13 +19,13 @@ ...@@ -19,13 +19,13 @@
<el-table v-loading="loading" :data="list"> <el-table v-loading="loading" :data="list">
<el-table-column :label="$t('下载编号')" align="center" prop="id" width="100" /> <el-table-column :label="$t('下载编号')" align="center" prop="id" width="100" />
<el-table-column :label="$t('分类')" align="center" prop="type" width="100" > <el-table-column :label="$t('分类')" align="left" prop="type" width="120" >
<template v-slot:default="{row}"> <template v-slot:default="{row}">
<dict-tag :type="DICT_TYPE.DOWNLOAD_TYPE" :value="row.type"/> <dict-tag :type="DICT_TYPE.DOWNLOAD_TYPE" :value="row.type"/>
</template> </template>
</el-table-column> </el-table-column>
<!--<el-table-column :label="$t('业务编号')" align="center" prop="type" width="100" /--> <!--<el-table-column :label="$t('业务编号')" align="center" prop="type" width="100" /-->
<el-table-column :label="$t('下载内容')" align="center" prop="name" /> <el-table-column :label="$t('下载内容')" align="left" prop="name" />
<el-table-column :label="$t('开始下载时间')" align="center" prop="createTime" width="150"> <el-table-column :label="$t('开始下载时间')" align="center" prop="createTime" width="150">
<template slot-scope="scope"> <template slot-scope="scope">
<span>{{ parseTime(scope.row.createTime) }}</span> <span>{{ parseTime(scope.row.createTime) }}</span>
...@@ -47,11 +47,11 @@ ...@@ -47,11 +47,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']" v-if="scope.row.status == 2">{{$t('下载')}}</el-button> v-if="scope.row.status == 2">{{$t('下载')}}</el-button>
<el-button size="mini" type="text" icon="el-icon-edit" @click="handleRetry(scope.row)" <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> v-if="scope.row.status == 3">{{$t('重试')}}</el-button>
<el-button size="mini" type="text" icon="el-icon-edit" @click="handleDel(scope.row)" <el-button size="mini" type="text" icon="el-icon-edit" @click="handleDel(scope.row)"
v-hasPermi="['system:notice:update']">{{$t('删除')}}</el-button> >{{$t('删除')}}</el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
......
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