Commit 2fd54c8f authored by zhoutong's avatar zhoutong
parents fb536e58 ebd16ec9
import Cookies from 'js-cookie' import Cookies from 'js-cookie'
const TokenKey = 'Admin-Token' const TokenKey = 'Jd-Admin-Token'
export function getToken() { export function getToken() {
return Cookies.get(TokenKey) return Cookies.get(TokenKey)
......
...@@ -233,7 +233,10 @@ export const DICT_TYPE = { ...@@ -233,7 +233,10 @@ export const DICT_TYPE = {
SETTLEMENT_STATUS: 'settlement_status', // 结算状态 SETTLEMENT_STATUS: 'settlement_status', // 结算状态
APP_TYPE:"app_type", //系统类型 APP_TYPE:"app_type", //系统类型
AIR_SHIPMENT_PROCESS:'air_shipment_process' AIR_SHIPMENT_PROCESS:'air_shipment_process',
AIR_CUSTOM_CLEARANCE:'air_custom _clearance', //渠道清关费
AIR_COMMODITY_CUSTOM_CLEARANCE:'air_commodity_custom _clearance'//商品渠道清关费,
} }
/** /**
......
...@@ -44,7 +44,7 @@ ...@@ -44,7 +44,7 @@
<el-table-column :label="$t('储位')" align="center" prop="positionNo" width="250px"> <el-table-column :label="$t('储位')" align="center" prop="positionNo" width="250px">
<template slot-scope="{ row }"> <template slot-scope="{ row }">
<div v-for="item in row.orderItemDOS" :key="item.orderItemId"> <div v-for="item in row.orderItemDOS" :key="item.orderItemId">
{{ notset(getpositionNo(item.warehouseInInfoVO.orderLocationMergeVOSet)) }} {{ (item.warehouseInInfoVO&&item.warehouseInInfoVO.orderLocationMergeVOSet)?notset(getpositionNo(item.warehouseInInfoVO.orderLocationMergeVOSet)):'' }}
</div> </div>
</template> </template>
</el-table-column> </el-table-column>
......
...@@ -43,7 +43,7 @@ ...@@ -43,7 +43,7 @@
<el-table-column :label="$t('储位')" align="center" prop="positionNo" width="250px"> <el-table-column :label="$t('储位')" align="center" prop="positionNo" width="250px">
<template slot-scope="{ row }"> <template slot-scope="{ row }">
<div v-for="item in row.orderItemDOS" :key="item.orderItemId"> <div v-for="item in row.orderItemDOS" :key="item.orderItemId">
{{ notset(getpositionNo(item.warehouseInInfoVO.orderLocationMergeVOSet)) }} {{ (item.warehouseInInfoVO&&item.warehouseInInfoVO.orderLocationMergeVOSet)?notset(getpositionNo(item.warehouseInInfoVO.orderLocationMergeVOSet)):'' }}
</div> </div>
</template> </template>
</el-table-column> </el-table-column>
......
<template> <template>
<div> <div class="wrapper">
<template v-if="!readonly"> <template v-if="!readonly">
<el-row type="flex" align="align" :gutter="10" > <el-row type="flex" align="align" :gutter="10" >
<el-col :span="6">空运订单重量上限(kg)</el-col> <el-col :span="6">{{$t('空运订单重量上限')}}(kg)</el-col>
<el-col :span="6" ><el-input v-model="value1.airWeightLimit"></el-input></el-col> <el-col :span="6" >
<el-input-number v-model="value1.airWeightLimit" controls-position="right" :max="screenCom"></el-input-number>
<!-- <el-input type="number" :max="2000" v-model="value1.airWeightLimit"></el-input>-->
</el-col>
<el-col :span="6"> <el-col :span="6">
<slot></slot> <slot></slot>
</el-col> </el-col>
</el-row> </el-row>
<h1>空运清关费</h1> <h1>{{$t('空运清关费')}}</h1>
</template> </template>
<div v-for="(item ,index) in value1[keyArr]"> <div v-for="(item ,index) in value1[keyArr]">
<el-row :gutter="10"> <el-row :gutter="10">
<el-col :span="4"> <el-col :span="5">
第{{index + 1 }}阶梯定价方案 {{$t('第{index}阶梯定价方案', {index: index+1})}}
</el-col> </el-col>
<el-col :span="6" v-if="!readonly"> <el-col :span="6" v-if="!readonly">
<el-button type="primary" @click="addInterval" v-if="index === 0" > <el-button type="primary" @click="addInterval" v-if="index === 0" >
添加区间 {{$t('添加区间')}}
</el-button> </el-button>
<el-button type="danger" @click="deleteFn(index)" v-else> <el-button type="danger" @click="deleteFn(index)" v-else>
删除 {{$t('删除')}}
</el-button> </el-button>
</el-col> </el-col>
</el-row> </el-row>
<el-row :gutter="10"> <el-row :gutter="10">
<el-col :span="3"> <el-col :span="5">
第{{index + 1}}阶梯 {{$t('第{index}阶梯', {index: index+1})}}
</el-col> </el-col>
<el-col :span="9"> <el-col :span="15">
<div style="display: flex;align-items: center;"> <div style="display: flex;align-items: center;">
<el-input v-model="item.startNum"></el-input> - <el-input v-model="item.endNum" ></el-input > / <el-input v-model="item.startNum" class="mr-10"></el-input>
<span class="mr-10">-</span>
<el-input v-model="item.endNum" class="mr-10"></el-input >
<span class="mr-10">/</span>
<weight-select @change="changeWeight" :disabled="index > 0" v-model="item.weightUnit" :options="unitList"></weight-select> <weight-select @change="changeWeight" :disabled="index > 0" v-model="item.weightUnit" :options="unitList"></weight-select>
</div> </div>
</el-col> </el-col>
</el-row> </el-row>
<el-row :gutter="10"> <el-row :gutter="10">
<el-col :span="3" > <el-col :span="5" >
空运清关费 {{$t('空运清关费')}}
</el-col> </el-col>
<el-col :span="9"> <el-col :span="15">
<div style="display: flex;align-items: center;"> <div style="display: flex;align-items: center;">
<el-input v-model="item.clearancePrice"></el-input> <el-input v-model="item.clearancePrice" class="mr-10"></el-input>
<currency-select @change="setCurrency" :disabled="index > 0" :options="currencyList" v-model="item.clearancePriceUnit"></currency-select> <currency-select class="mr-10" @change="setCurrency" :disabled="index > 0" :options="currencyList" v-model="item.clearancePriceUnit"></currency-select>
/ <weight-select :disabled="index > 0" @change="setAirFreightWeight" :options="unitList" v-model="item.clearanceVolumeUnit"></weight-select> <span class="mr-10">/</span>
<weight-select :disabled="index > 0" @change="setAirFreightWeight" :options="unitList" v-model="item.clearanceVolumeUnit"></weight-select>
</div> </div>
</el-col> </el-col>
</el-row> </el-row>
...@@ -57,6 +64,7 @@ import CurrencySelect from "@/views/ecw/channel/componrnts/currency-select.vue"; ...@@ -57,6 +64,7 @@ import CurrencySelect from "@/views/ecw/channel/componrnts/currency-select.vue";
import {getUnitList} from "@/api/ecw/unit"; import {getUnitList} from "@/api/ecw/unit";
import WeightSelect from "@/views/ecw/channel/componrnts/weight-select.vue"; import WeightSelect from "@/views/ecw/channel/componrnts/weight-select.vue";
import Template from "@/views/cms/template/index.vue"; import Template from "@/views/cms/template/index.vue";
import {getDictDatas} from "@/utils/dict";
export default { export default {
props:{ props:{
value:{ value:{
...@@ -72,6 +80,8 @@ export default { ...@@ -72,6 +80,8 @@ export default {
name: "packaging-type", name: "packaging-type",
components: {Template, WeightSelect, CurrencySelect}, components: {Template, WeightSelect, CurrencySelect},
created() { created() {
console.log(this.getDictDatas(this.DICT_TYPE.AIR_CUSTOM_CLEARANCE),'123')
getCurrencyPage(this.params).then(res => this.currencyList = res.data.list) getCurrencyPage(this.params).then(res => this.currencyList = res.data.list)
getUnitList().then(res => this.unitList = res.data) getUnitList().then(res => this.unitList = res.data)
}, },
...@@ -86,6 +96,18 @@ export default { ...@@ -86,6 +96,18 @@ export default {
} }
}, },
computed:{
screenCom(){
let num = undefined
if(this.keyArr === 'channelPriceStepClearanceList'){
num = this.getDictDatas(this.DICT_TYPE.AIR_CUSTOM_CLEARANCE)[0]?.value
}else {
num = this.getDictDatas(this.DICT_TYPE. AIR_COMMODITY_CUSTOM_CLEARANCE)[0]?.value
}
return +num
}
},
mounted() { mounted() {
this.value1 = this.value this.value1 = this.value
this.$nextTick(()=>{ this.$nextTick(()=>{
...@@ -153,6 +175,9 @@ export default { ...@@ -153,6 +175,9 @@ export default {
</script> </script>
<style scoped> <style scoped>
.wrapper{
font-size: 14px;
}
.el-row { .el-row {
margin-bottom: 10px; margin-bottom: 10px;
display: flex; display: flex;
......
...@@ -122,7 +122,7 @@ ...@@ -122,7 +122,7 @@
</el-select> </el-select>
</el-col> </el-col>
<el-col :span="16"> <el-col :span="16">
<packaging-type v-if="form.channelPackagingList.length" v-model="form.channelPackagingList[index]"> <packaging-type v-if="form.channelPackagingList.length" v-model="form.channelPackagingList[index]">
<el-button :disabled="form.channelPackagingList.length === 1" @click="deleteFn(index)" type="danger">删除包装类型{{index + 1}}</el-button> <el-button :disabled="form.channelPackagingList.length === 1" @click="deleteFn(index)" type="danger">删除包装类型{{index + 1}}</el-button>
</packaging-type> </packaging-type>
</el-col> </el-col>
......
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
<div style="display: flex;justify-content: space-between;align-items: flex-end;"> <div style="display: flex;justify-content: space-between;align-items: flex-end;">
<h2>{{$t('查看')}}</h2> <h2>{{$t('查看')}}</h2>
<div> <div>
<el-button type="primary" size="small" v-has-permi="['ecw:customer:query-edit']" @click="$router.push('/customer/edit/' + id)">{{$t('编辑')}}</el-button> <el-button type="primary" size="small" v-has-permi="['ecw:customer:query-edit']" @click="$router.push('/customer/add-edit/' + id)">{{$t('编辑')}}</el-button>
<el-button v-has-permi="['ecw:customer:query-quoted-price']" @click="$router.push('/offer/create')" type="primary" size="small">{{$t('报价')}}</el-button> <el-button v-has-permi="['ecw:customer:query-quoted-price']" @click="$router.push('/offer/create')" type="primary" size="small">{{$t('报价')}}</el-button>
<el-button v-has-permi="['ecw:customer:query-follow-up']" type="primary" size="small" @click="customerFollowFn('follow')">{{$t('跟进')}}</el-button> <el-button v-has-permi="['ecw:customer:query-follow-up']" type="primary" size="small" @click="customerFollowFn('follow')">{{$t('跟进')}}</el-button>
<el-button v-has-permi="['ecw:customer:query-customer-complaint']" type="primary" size="small" @click="customerFollowFn('complain')">{{$t('客诉')}}</el-button> <el-button v-has-permi="['ecw:customer:query-customer-complaint']" type="primary" size="small" @click="customerFollowFn('complain')">{{$t('客诉')}}</el-button>
......
...@@ -19,12 +19,6 @@ ...@@ -19,12 +19,6 @@
</el-select> --> </el-select> -->
<dict-selector :type="DICT_TYPE.CUSTOMER_ESOURCE_TYPE" v-model="queryParams.customerType" :placeholder="$t('请选择资源类型')" clearable ></dict-selector> <dict-selector :type="DICT_TYPE.CUSTOMER_ESOURCE_TYPE" v-model="queryParams.customerType" :placeholder="$t('请选择资源类型')" clearable ></dict-selector>
</el-form-item> </el-form-item>
<!-- <el-form-item :label="$t('客户经理')" prop="customerService">
<el-select clearable v-model="queryParams.customerService" :placeholder="$t('请选择客户经理')" clearable size="small">
<el-option v-for="dict in customerServiceList"
:key="dict.id" :label="dict.nickname" :value="dict.id"/>
</el-select>
</el-form-item> -->
<!-- <el-form-item prop="customerService"> <!-- <el-form-item prop="customerService">
<el-select clearable v-model="queryParams.customerService" clearable size="small"> <el-select clearable v-model="queryParams.customerService" clearable size="small">
<el-option :label="$t('下单时间')" value="createTime"/> <el-option :label="$t('下单时间')" value="createTime"/>
...@@ -39,6 +33,31 @@ ...@@ -39,6 +33,31 @@
<!-- <el-date-picker v-model="queryParams.endStartTime" :placeholder="$t('请选择结束时间')" value-format="yyyy-MM-dd HH:mm:ss"></el-date-picker>--> <!-- <el-date-picker v-model="queryParams.endStartTime" :placeholder="$t('请选择结束时间')" value-format="yyyy-MM-dd HH:mm:ss"></el-date-picker>-->
<!-- </el-form-item>--> <!-- </el-form-item>-->
<el-form-item> <el-form-item>
<el-form-item :label="$t('报价单号')" prop="key">
<el-input v-model="queryParams.number" :placeholder="$t('请输入报价单号')" clearable/>
</el-form-item>
<el-form-item :label="$t('客户名称')" prop="key">
<el-input v-model="queryParams.name" :placeholder="$t('请输入客户名称')" clearable/>
</el-form-item>
<el-form-item :label="$t('联系方式')" prop="key">
<el-input v-model="queryParams.phoneNew" :placeholder="$t('请输入联系方式')" clearable/>
</el-form-item>
<el-form-item :label="$t('客户经理')" prop="customerService">
<el-select clearable v-model="queryParams.customerService" :placeholder="$t('请选择客户经理')" clearable size="small">
<el-option v-for="dict in customerServiceList"
:key="dict.id" :label="dict.nickname" :value="dict.id"/>
</el-select>
</el-form-item>
<el-form-item :label="$t('始发仓')" prop="destinationId">
<el-select v-model="queryParams.originId" :placeholder="$t('请选择始发仓')" clearable>
<el-option v-for="item in exportWarehouseList" :label="$l(item, 'title')" :value="item.id" :key="item.id"></el-option>
</el-select>
</el-form-item>
<el-form-item :label="$t('目的仓')" prop="destinationId">
<el-select :multiple="true" v-model="queryParams.destinationId" multiple :placeholder="$t('请选择目的仓')" clearable>
<el-option v-for="item in importWarehouseList" :label="$l(item, 'title')" :value="item.id" :key="item.id"></el-option>
</el-select>
</el-form-item>
<el-button type="primary" icon="el-icon-search" @click="handleQuery">{{$t('搜索')}}</el-button> <el-button type="primary" icon="el-icon-search" @click="handleQuery">{{$t('搜索')}}</el-button>
<el-button type="primary" icon="el-icon-search" @click="resetQuery">{{$t('重置')}}</el-button> <el-button type="primary" icon="el-icon-search" @click="resetQuery">{{$t('重置')}}</el-button>
<el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExportDetail" :loading="exportLoading" v-hasPermi="['ecw:achievement:export']">{{ $t('导出明细') }}</el-button> <el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExportDetail" :loading="exportLoading" v-hasPermi="['ecw:achievement:export']">{{ $t('导出明细') }}</el-button>
...@@ -129,7 +148,8 @@ ...@@ -129,7 +148,8 @@
import {getChannelList} from '@/api/ecw/channel'; import {getChannelList} from '@/api/ecw/channel';
import dayjs from "dayjs"; import dayjs from "dayjs";
import {listServiceUser} from "@/api/system/user"; import {listServiceUser} from "@/api/system/user";
import {getWarehouseList} from '@/api/ecw/warehouse'
export default { export default {
name: "EcwDepttargetAllachievement", name: "EcwDepttargetAllachievement",
components: {}, components: {},
...@@ -204,7 +224,8 @@ ...@@ -204,7 +224,8 @@
sumVolume:0, sumVolume:0,
sumNum:0, sumNum:0,
}, },
myAchievementData:{} myAchievementData:{},
warehouseList:[]
}; };
}, },
computed: { computed: {
...@@ -218,7 +239,14 @@ ...@@ -218,7 +239,14 @@
} }
return '/' return '/'
} }
} },
exportWarehouseList(){
/* tradeType 1 进口,2出口,3进出口 */
return this.warehouseList.filter(item => item.tradeType == 2 || item.tradeType == 3)
},
importWarehouseList(){
return this.warehouseList.filter(item => item.tradeType == 1 || item.tradeType == 3)
},
}, },
activated() { activated() {
this.getChannelList(); this.getChannelList();
...@@ -230,6 +258,7 @@ ...@@ -230,6 +258,7 @@
listServiceUser().then(r=>{ listServiceUser().then(r=>{
this.customerServiceList = r.data; this.customerServiceList = r.data;
}) })
getWarehouseList().then(res => this.warehouseList = res.data)
}, },
methods: { methods: {
getChannelList() { getChannelList() {
......
...@@ -164,7 +164,7 @@ ...@@ -164,7 +164,7 @@
import {listDept, listSimpleDepts} from "@/api/system/dept"; import {listDept, listSimpleDepts} from "@/api/system/dept";
import {getChannelList} from '@/api/ecw/channel'; import {getChannelList} from '@/api/ecw/channel';
import dayjs from "dayjs"; import dayjs from "dayjs";
import { parseTime } from '@/utils/ruoyi'; import { parseTime } from '@/utils/ruoyi';
import Template from "@/views/cms/template/index.vue"; import Template from "@/views/cms/template/index.vue";
export default { export default {
...@@ -234,7 +234,8 @@ import { parseTime } from '@/utils/ruoyi'; ...@@ -234,7 +234,8 @@ import { parseTime } from '@/utils/ruoyi';
cubeNum: [{required: true, message: this.$t("立方数不能为空"), trigger: "blur"}], cubeNum: [{required: true, message: this.$t("立方数不能为空"), trigger: "blur"}],
startTime: [{required: true, message: this.$t("起始时间不能为空"), trigger: "change"}], startTime: [{required: true, message: this.$t("起始时间不能为空"), trigger: "change"}],
endTime: [{required: true, message: this.$t("截止时间不能为空"), trigger: "change"}], endTime: [{required: true, message: this.$t("截止时间不能为空"), trigger: "change"}],
} },
}; };
}, },
computed: { computed: {
......
...@@ -39,6 +39,31 @@ ...@@ -39,6 +39,31 @@
<!-- <el-date-picker v-model="queryParams.endStartTime" :placeholder="$t('请选择结束时间')" value-format="yyyy-MM-dd HH:mm:ss"></el-date-picker>--> <!-- <el-date-picker v-model="queryParams.endStartTime" :placeholder="$t('请选择结束时间')" value-format="yyyy-MM-dd HH:mm:ss"></el-date-picker>-->
<!-- </el-form-item>--> <!-- </el-form-item>-->
<el-form-item> <el-form-item>
<el-form-item :label="$t('报价单号')" prop="key">
<el-input v-model="queryParams.number" :placeholder="$t('请输入报价单号')" clearable/>
</el-form-item>
<el-form-item :label="$t('客户名称')" prop="key">
<el-input v-model="queryParams.name" :placeholder="$t('请输入客户名称')" clearable/>
</el-form-item>
<el-form-item :label="$t('联系方式')" prop="key">
<el-input v-model="queryParams.phoneNew" :placeholder="$t('请输入联系方式')" clearable/>
</el-form-item>
<el-form-item :label="$t('客户经理')" prop="customerService">
<el-select clearable v-model="queryParams.customerService" :placeholder="$t('请选择客户经理')" clearable size="small">
<el-option v-for="dict in customerServiceList"
:key="dict.id" :label="dict.nickname" :value="dict.id"/>
</el-select>
</el-form-item>
<el-form-item :label="$t('始发仓')" prop="destinationId">
<el-select v-model="queryParams.originId" :placeholder="$t('请选择始发仓')" clearable>
<el-option v-for="item in exportWarehouseList" :label="$l(item, 'title')" :value="item.id" :key="item.id"></el-option>
</el-select>
</el-form-item>
<el-form-item :label="$t('目的仓')" prop="destinationId">
<el-select :multiple="true" v-model="queryParams.destinationId" multiple :placeholder="$t('请选择目的仓')" clearable>
<el-option v-for="item in importWarehouseList" :label="$l(item, 'title')" :value="item.id" :key="item.id"></el-option>
</el-select>
</el-form-item>
<el-button type="primary" icon="el-icon-search" @click="handleQuery">{{$t('搜索')}}</el-button> <el-button type="primary" icon="el-icon-search" @click="handleQuery">{{$t('搜索')}}</el-button>
<el-button type="primary" icon="el-icon-search" @click="resetQuery">{{$t('重置')}}</el-button> <el-button type="primary" icon="el-icon-search" @click="resetQuery">{{$t('重置')}}</el-button>
<!-- <el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport" :loading="exportLoading" <!-- <el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport" :loading="exportLoading"
...@@ -125,6 +150,7 @@ ...@@ -125,6 +150,7 @@
import {getChannelList} from '@/api/ecw/channel'; import {getChannelList} from '@/api/ecw/channel';
import dayjs from "dayjs"; import dayjs from "dayjs";
import {listServiceUser} from "@/api/system/user"; import {listServiceUser} from "@/api/system/user";
import {getWarehouseList} from '@/api/ecw/warehouse'
export default { export default {
name: "EcwDepttargetMyachievement", name: "EcwDepttargetMyachievement",
...@@ -200,7 +226,8 @@ ...@@ -200,7 +226,8 @@
sumVolume:0, sumVolume:0,
sumNum:0, sumNum:0,
}, },
myAchievementData:{} myAchievementData:{},
warehouseList:[]
}; };
}, },
computed: { computed: {
...@@ -214,7 +241,14 @@ ...@@ -214,7 +241,14 @@
} }
return '/' return '/'
} }
} },
exportWarehouseList(){
/* tradeType 1 进口,2出口,3进出口 */
return this.warehouseList.filter(item => item.tradeType == 2 || item.tradeType == 3)
},
importWarehouseList(){
return this.warehouseList.filter(item => item.tradeType == 1 || item.tradeType == 3)
},
}, },
activated() { activated() {
this.getChannelList(); this.getChannelList();
......
...@@ -39,6 +39,31 @@ ...@@ -39,6 +39,31 @@
<!-- <el-date-picker v-model="queryParams.endStartTime" :placeholder="$t('请选择结束时间')" value-format="yyyy-MM-dd HH:mm:ss"></el-date-picker>--> <!-- <el-date-picker v-model="queryParams.endStartTime" :placeholder="$t('请选择结束时间')" value-format="yyyy-MM-dd HH:mm:ss"></el-date-picker>-->
<!-- </el-form-item>--> <!-- </el-form-item>-->
<el-form-item> <el-form-item>
<el-form-item :label="$t('报价单号')" prop="key">
<el-input v-model="queryParams.number" :placeholder="$t('请输入报价单号')" clearable/>
</el-form-item>
<el-form-item :label="$t('客户名称')" prop="key">
<el-input v-model="queryParams.name" :placeholder="$t('请输入客户名称')" clearable/>
</el-form-item>
<el-form-item :label="$t('联系方式')" prop="key">
<el-input v-model="queryParams.phoneNew" :placeholder="$t('请输入联系方式')" clearable/>
</el-form-item>
<el-form-item :label="$t('客户经理')" prop="customerService">
<el-select clearable v-model="queryParams.customerService" :placeholder="$t('请选择客户经理')" clearable size="small">
<el-option v-for="dict in customerServiceList"
:key="dict.id" :label="dict.nickname" :value="dict.id"/>
</el-select>
</el-form-item>
<el-form-item :label="$t('始发仓')" prop="destinationId">
<el-select v-model="queryParams.originId" :placeholder="$t('请选择始发仓')" clearable>
<el-option v-for="item in exportWarehouseList" :label="$l(item, 'title')" :value="item.id" :key="item.id"></el-option>
</el-select>
</el-form-item>
<el-form-item :label="$t('目的仓')" prop="destinationId">
<el-select :multiple="true" v-model="queryParams.destinationId" multiple :placeholder="$t('请选择目的仓')" clearable>
<el-option v-for="item in importWarehouseList" :label="$l(item, 'title')" :value="item.id" :key="item.id"></el-option>
</el-select>
</el-form-item>
<el-button type="primary" icon="el-icon-search" @click="handleQuery">{{$t('搜索')}}</el-button> <el-button type="primary" icon="el-icon-search" @click="handleQuery">{{$t('搜索')}}</el-button>
<!-- <el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport" :loading="exportLoading" <!-- <el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport" :loading="exportLoading"
>{{$t('导出')}}</el-button> --> >{{$t('导出')}}</el-button> -->
...@@ -125,7 +150,8 @@ ...@@ -125,7 +150,8 @@
import {getChannelList} from '@/api/ecw/channel'; import {getChannelList} from '@/api/ecw/channel';
import dayjs from "dayjs"; import dayjs from "dayjs";
import {listServiceUser} from "@/api/system/user"; import {listServiceUser} from "@/api/system/user";
import {getWarehouseList} from '@/api/ecw/warehouse'
export default { export default {
name: "EcwDepttargetMydeptachievement", name: "EcwDepttargetMydeptachievement",
components: {}, components: {},
...@@ -200,7 +226,8 @@ ...@@ -200,7 +226,8 @@
sumVolume:0, sumVolume:0,
sumNum:0, sumNum:0,
}, },
myAchievementData:{} myAchievementData:{},
warehouseList:[]
}; };
}, },
computed: { computed: {
...@@ -214,7 +241,14 @@ ...@@ -214,7 +241,14 @@
} }
return '/' return '/'
} }
} },
exportWarehouseList(){
/* tradeType 1 进口,2出口,3进出口 */
return this.warehouseList.filter(item => item.tradeType == 2 || item.tradeType == 3)
},
importWarehouseList(){
return this.warehouseList.filter(item => item.tradeType == 1 || item.tradeType == 3)
},
}, },
created() { created() {
this.getChannelList(); this.getChannelList();
......
...@@ -363,7 +363,7 @@ export default { ...@@ -363,7 +363,7 @@ export default {
}, },
/** 修改按钮操作 */ /** 修改按钮操作 */
handleUpdate(row) { handleUpdate(row) {
this.$router.push('/customer/edit/' + row.id) this.$router.push('/customer/add-edit/' + row.id)
// this.reset(); // this.reset();
// const id = row.id; // const id = row.id;
// getCustomer(id).then(response => { // getCustomer(id).then(response => {
......
...@@ -368,7 +368,7 @@ export default { ...@@ -368,7 +368,7 @@ export default {
}, },
/** 修改按钮操作 */ /** 修改按钮操作 */
handleUpdate(row) { handleUpdate(row) {
this.$router.push('/customer/edit/' + row.id) this.$router.push('/customer/add-edit/' + row.id)
// this.reset(); // this.reset();
// const id = row.id; // const id = row.id;
// getCustomer(id).then(response => { // getCustomer(id).then(response => {
......
...@@ -141,9 +141,10 @@ ...@@ -141,9 +141,10 @@
<div> <div>
{{$t('运费')}}{{row.oneSeaFreight}} {{currentcyMap[row.seaFreightCurrency]}} / {{unitMap[row.seaFreightVolume]}} {{$t('运费')}}{{row.oneSeaFreight}} {{currentcyMap[row.seaFreightCurrency]}} / {{unitMap[row.seaFreightVolume]}}
</div> </div>
<div> <div v-if="row.oneClearanceFreight">
{{$t('清关费')}}{{row.oneClearanceFreight}} {{currentcyMap[row.clearanceFreightCurrency]}} / {{unitMap[row.clearanceFreightVolume]}} {{$t('清关费')}}{{row.oneClearanceFreight}} {{currentcyMap[row.clearanceFreightCurrency]}} / {{unitMap[row.clearanceFreightVolume]}}
</div> </div>
<div v-else>{{$t('清关费未报价')}}</div>
</template> </template>
</template> </template>
</el-table-column> </el-table-column>
......
...@@ -1103,11 +1103,11 @@ export default { ...@@ -1103,11 +1103,11 @@ export default {
this.form.prodCreateReqVOList.forEach(item => { this.form.prodCreateReqVOList.forEach(item => {
let tmp = {...item} let tmp = {...item}
tmp.prodAttrIds = tmp.prodAttrArr.join(',') tmp.prodAttrIds = tmp.prodAttrArr.join(',')
if(!tmp.volume)tmp.volume = 1 if(!tmp.volume)tmp.volume = 0
if(!tmp.weight)tmp.weight = 1 if(!tmp.weight)tmp.weight = 0
if(!tmp.quantity)tmp.quantity = 1 if(!tmp.quantity)tmp.quantity = 0
if(!tmp.num)tmp.num = 1 if(!tmp.num)tmp.num = 0
if(!tmp.worth)tmp.worth = 1 if(!tmp.worth)tmp.worth = 0
arr.push(tmp) arr.push(tmp)
}) })
return arr return arr
......
...@@ -81,7 +81,7 @@ ...@@ -81,7 +81,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('出货渠道')" >{{channelName}}</el-descriptions-item> <el-descriptions-item v-if="getDictData(DICT_TYPE.ECW_TRANSPORT_TYPE, order.transportId).cssClass == 'channel'":label="$t('出货渠道')" >{{order.channelName}}</el-descriptions-item>
</el-descriptions> </el-descriptions>
</el-card> </el-card>
...@@ -164,6 +164,36 @@ ...@@ -164,6 +164,36 @@
</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">
...@@ -179,6 +209,11 @@ ...@@ -179,6 +209,11 @@
<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}">
...@@ -415,7 +450,12 @@ ...@@ -415,7 +450,12 @@
</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>{{$t('清关费')}}</div> <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">
...@@ -493,6 +533,8 @@ import FeeDetail from "@/views/ecw/order/components/FeeDetail.vue"; ...@@ -493,6 +533,8 @@ import FeeDetail from "@/views/ecw/order/components/FeeDetail.vue";
import PackHistory from './components/PackHistory'; import PackHistory from './components/PackHistory';
import PackHistoryDetail from './components/PackHistoryDetail'; import PackHistoryDetail from './components/PackHistoryDetail';
import {getOfferCheck} from '@/api/ecw/offer' import {getOfferCheck} from '@/api/ecw/offer'
import {getSupplier} from "@/api/ecw/supplier";
import {getProductAttrList} from "@/api/ecw/productAttr";
export default { export default {
name: "detail", name: "detail",
...@@ -549,7 +591,7 @@ export default { ...@@ -549,7 +591,7 @@ export default {
showFeeSummary: false, // 是否显示费用汇总 showFeeSummary: false, // 是否显示费用汇总
shopPackId:null,//显示打包历史的ID shopPackId:null,//显示打包历史的ID
packAfterData:null,//显示打包历史详情 packAfterData:null,//显示打包历史详情
attrList: []
} }
}, },
computed:{ computed:{
...@@ -585,6 +627,18 @@ export default { ...@@ -585,6 +627,18 @@ export default {
// 判断用户是否有查看客户详情的权限 // 判断用户是否有查看客户详情的权限
hasCustomerDetailPermi(){ hasCustomerDetailPermi(){
return checkPermi(['ecw:customer:index-query']) return checkPermi(['ecw:customer:index-query'])
},
// 显示特性
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:{
...@@ -596,9 +650,6 @@ export default { ...@@ -596,9 +650,6 @@ export default {
this.loadLogs() this.loadLogs()
} }
}, },
'order.channelId'(){
this.getChannel()
},
'order.consigneeVO'(val){ 'order.consigneeVO'(val){
if(!val) return '-' if(!val) return '-'
listByIds({ids: [val.country, val.province, val.city].join(',')}).then(res => { listByIds({ids: [val.country, val.province, val.city].join(',')}).then(res => {
...@@ -620,6 +671,10 @@ export default { ...@@ -620,6 +671,10 @@ export default {
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: {
checkPermi, // 检查权限 checkPermi, // 检查权限
...@@ -636,6 +691,11 @@ export default { ...@@ -636,6 +691,11 @@ 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;
...@@ -721,8 +781,16 @@ export default { ...@@ -721,8 +781,16 @@ export default {
label: this.$t('价格更新时间'), label: this.$t('价格更新时间'),
value: parseTime(row.updateTime) value: parseTime(row.updateTime)
}) })
this.feeDetail = {freight, clearance, charging: row.charging, coupons: row.couponInfoVOList} this.feeDetail = {
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(){
this.showFeeDetailDialog = null this.showFeeDetailDialog = null
...@@ -734,7 +802,7 @@ export default { ...@@ -734,7 +802,7 @@ export default {
// 执行查询 // 执行查询
getOrder(that.orderId).then(response => { getOrder(that.orderId).then(response => {
that.order = response.data; that.order = response.data;
// this.loadBrand() if(that.order.airlineCompany) that.getAirCompany()
}); });
}, },
/* loadBrands(){ /* loadBrands(){
...@@ -751,12 +819,12 @@ export default { ...@@ -751,12 +819,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.channelName = res.data.nameZh 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
......
...@@ -1464,10 +1464,10 @@ export default { ...@@ -1464,10 +1464,10 @@ export default {
let arr = [] let arr = []
this.form.orderItemVOList.forEach(item => { this.form.orderItemVOList.forEach(item => {
let tmp = {...item} let tmp = {...item}
if(!tmp.volume)tmp.volume = 1 if(!tmp.volume)tmp.volume = 0
if(!tmp.weight)tmp.weight = 1 if(!tmp.weight)tmp.weight = 0
if(!tmp.quantity)tmp.quantity = 1 if(!tmp.quantity)tmp.quantity = 0
if(!tmp.num)tmp.num = 1 if(!tmp.num)tmp.num = 0
tmp.orderType = item.orderItemType tmp.orderType = item.orderItemType
arr.push(tmp) arr.push(tmp)
}) })
......
...@@ -108,6 +108,13 @@ ...@@ -108,6 +108,13 @@
<el-option :label="$t('自有仓')" :value="0"></el-option> <el-option :label="$t('自有仓')" :value="0"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item :label="$t('特需')" prop="packageType">
<el-select v-model="queryParams.packageTypeArr" multiple :placeholder="$t('请选择')" clearable >
<template v-for="item in getDictDatas(DICT_TYPE.ORDER_SPECIAL_NEEDS)">
<el-option :label="$l(item, 'label')" :value="item.value"></el-option>
</template>
</el-select>
</el-form-item>
</el-row> </el-row>
<el-row> <el-row>
<el-form-item label=""> <el-form-item label="">
...@@ -254,7 +261,7 @@ ...@@ -254,7 +261,7 @@
<el-button v-else-if="scope.row.orderExceptionType=='in_warehousing_diff_exception'" v-hasPermi="['ecw:exception:inWarehousingException']" size="mini" type="text" icon="el-icon-edit" @click="handEdit(scope.row.orderId)">{{$t('处理')}}</el-button> <el-button v-else-if="scope.row.orderExceptionType=='in_warehousing_diff_exception'" v-hasPermi="['ecw:exception:inWarehousingException']" size="mini" type="text" icon="el-icon-edit" @click="handEdit(scope.row.orderId)">{{$t('处理')}}</el-button>
<el-button v-else-if="scope.row.orderExceptionType=='stock_up_exception'" v-hasPermi="['ecw:exception:stockUpException']" size="mini" type="text" icon="el-icon-edit" @click="handEdit(scope.row.orderId)">{{$t('处理')}}</el-button> <el-button v-else-if="scope.row.orderExceptionType=='stock_up_exception'" v-hasPermi="['ecw:exception:stockUpException']" size="mini" type="text" icon="el-icon-edit" @click="handEdit(scope.row.orderId)">{{$t('处理')}}</el-button>
<el-button v-else-if="scope.row.orderExceptionType=='channel_exception'" v-hasPermi="['ecw:exception:channelException']" size="mini" type="text" icon="el-icon-edit" @click="handEdit(scope.row.orderId)">{{$t('处理')}}</el-button> <el-button v-else-if="scope.row.orderExceptionType=='channel_exception'" v-hasPermi="['ecw:exception:channelException']" size="mini" type="text" icon="el-icon-edit" @click="handEdit(scope.row.orderId)">{{$t('处理')}}</el-button>
<el-button v-else-if="scope.row.orderExceptionType=='channel_packaging_overweight_exception'" v-hasPermi="['ecw:exception:channelPackagingException']" size="mini" type="text" icon="el-icon-edit" @click="handEdit(scope.row.orderId)">{{$t('处理')}}</el-button> <el-button v-else-if="scope.row.orderExceptionType=='channel_packaging_overweight_exception'" v-hasPermi="['ecw:exception:channelPackagingException']" size="mini" type="text" icon="el-icon-edit" @click="handEdit(scope.row.orderId)">{{$t('处理')}}</el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
...@@ -273,10 +280,12 @@ import {listServiceUser,userList} from "@/api/system/user" ...@@ -273,10 +280,12 @@ import {listServiceUser,userList} from "@/api/system/user"
import CustomerSelector from '@/components/CustomerSelector' import CustomerSelector from '@/components/CustomerSelector'
import ProductSelector from '@/components/ProductSelector' import ProductSelector from '@/components/ProductSelector'
import {getWarehouseList} from '@/api/ecw/warehouse' import {getWarehouseList} from '@/api/ecw/warehouse'
import Template from "@/views/cms/template/index.vue";
export default { export default {
name: "EcwOrderException", name: "EcwOrderException",
components: { components: {
Template,
CustomerSelector,ProductSelector CustomerSelector,ProductSelector
}, },
data() { data() {
...@@ -343,6 +352,10 @@ export default { ...@@ -343,6 +352,10 @@ export default {
this.list = [] this.list = []
// 处理查询参数 // 处理查询参数
let params = {...this.queryParams} let params = {...this.queryParams}
if(params.packageTypeArr && params.packageTypeArr.length){
params.packageType = params.packageTypeArr.join(',')
delete params.packageTypeArr
}
// 执行查询 // 执行查询
getOrderExceptionPage(params).then(response => { getOrderExceptionPage(params).then(response => {
this.list = response.data.list; this.list = response.data.list;
......
...@@ -95,6 +95,13 @@ ...@@ -95,6 +95,13 @@
<el-form-item :label="$t('出货渠道')" prop="number"> <el-form-item :label="$t('出货渠道')" prop="number">
<selector :options="channelList" :label-field="$l('name')" value-field="channelId" v-model="queryParams.channelId"></selector> <selector :options="channelList" :label-field="$l('name')" value-field="channelId" v-model="queryParams.channelId"></selector>
</el-form-item> </el-form-item>
<el-form-item :label="$t('特需')" prop="packageType">
<el-select v-model="queryParams.packageTypeArr" multiple :placeholder="$t('请选择')" clearable >
<template v-for="item in getDictDatas(DICT_TYPE.ORDER_SPECIAL_NEEDS)">
<el-option :label="$l(item, 'label')" :value="item.value"></el-option>
</template>
</el-select>
</el-form-item>
<el-form-item> <el-form-item>
<el-button type="primary" icon="el-icon-search" @click="handleQuery">{{$t('搜索')}}</el-button> <el-button type="primary" icon="el-icon-search" @click="handleQuery">{{$t('搜索')}}</el-button>
<el-button icon="el-icon-refresh" @click="resetQuery">{{$t('重置')}}</el-button> <el-button icon="el-icon-refresh" @click="resetQuery">{{$t('重置')}}</el-button>
...@@ -171,7 +178,19 @@ ...@@ -171,7 +178,19 @@
{{scope.row.statusMsg}} {{scope.row.statusMsg}}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('预计运费/清关费')" align="center" prop="status">
<template slot-scope="{row}">
<div v-if="row.costVO">
<template v-for="item in row.costVO.feeDtoList">
<div v-if="[1,2].indexOf(item.feeType) > -1">
{{item.feeType == 1 ? $t('运费'):$t('清关费')}}
{{item.amount}}
{{currencyMap[item.currencyId]}}
</div>
</template>
</div>
</template>
</el-table-column>
<el-table-column :label="$t('操作')" align="center" class-name="small-padding fixed-width actions" width="150px"> <el-table-column :label="$t('操作')" align="center" class-name="small-padding fixed-width actions" width="150px">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button type="text" @click="setCanShipment(scope.row)" v-hasPermi="['ecw:order:peddingList:can_shipment']">{{$t('可出')}}</el-button> <el-button type="text" @click="setCanShipment(scope.row)" v-hasPermi="['ecw:order:peddingList:can_shipment']">{{$t('可出')}}</el-button>
...@@ -237,9 +256,11 @@ import { getCurrencyPage } from "@/api/ecw/currency"; ...@@ -237,9 +256,11 @@ import { getCurrencyPage } from "@/api/ecw/currency";
import SplitRevoke from "@/views/ecw/order/components/SplitRevoke"; import SplitRevoke from "@/views/ecw/order/components/SplitRevoke";
import {getChannelList} from "@/api/ecw/channel"; import {getChannelList} from "@/api/ecw/channel";
import ImageAndVideoUpload from "@/components/ImageAndVideoUpload"; import ImageAndVideoUpload from "@/components/ImageAndVideoUpload";
import Template from "@/views/cms/template/index.vue";
export default { export default {
name: "EcwPeddingList", name: "EcwPeddingList",
components: { components: {
Template,
UserSelector, UserSelector,
FeeApplication, FeeApplication,
BatchSingleApplication, BatchSingleApplication,
...@@ -331,6 +352,13 @@ export default { ...@@ -331,6 +352,13 @@ export default {
} }
let queryParams = Object.assign({}, this.queryParams, timeParams) let queryParams = Object.assign({}, this.queryParams, timeParams)
return queryParams return queryParams
},
currencyMap(){
let map = {}
this.currencyList.forEach(item => {
map[item.id] = this.$l(item, 'title')
})
return map
} }
}, },
activated(){ activated(){
...@@ -348,8 +376,12 @@ export default { ...@@ -348,8 +376,12 @@ export default {
/** 查询列表 */ /** 查询列表 */
getList() { getList() {
this.loading = true; this.loading = true;
const query = {...this.combinedQueryParams}
if(query.packageTypeArr && query.packageTypeArr.length){
query.packageType = query.packageTypeArr.join(',')
}
// 执行查询 // 执行查询
waitingShipmentPage(this.combinedQueryParams).then(response => { waitingShipmentPage(query).then(response => {
// 部分情况下,订单后面的操作下拉菜单会显示按钮,但是下来没有选项,在elTable组件更新的时候会导致渲染错误,所以要在更新渲染前清空一次list让table彻底重新渲染,避免部分更新导致异常 // 部分情况下,订单后面的操作下拉菜单会显示按钮,但是下来没有选项,在elTable组件更新的时候会导致渲染错误,所以要在更新渲染前清空一次list让table彻底重新渲染,避免部分更新导致异常
this.list = [] this.list = []
this.$nextTick(() => { this.$nextTick(() => {
......
...@@ -114,7 +114,7 @@ ...@@ -114,7 +114,7 @@
</el-row> </el-row>
<el-row v-if="orderExceptionData.orderExceptionType=='order_pay_exception'||orderExceptionData.orderExceptionType!='goods_add_exception'"> <el-row v-if="orderExceptionData.orderExceptionType=='order_pay_exception'||orderExceptionData.orderExceptionType!='goods_add_exception'">
<el-form-item :label="$t('收费参数')+':'"> <el-form-item :label="$t('收费参数')+':'">
<span>{{orderData.sumNum||0}}{{$t('')}} {{orderData.wvolume||0}}m³ {{orderData.vweight||0}}Kg {{orderData.sumQuantity||0}}{{$t('')}}</span> <span>{{shopData.num||0}}{{$t('')}} {{shopData.wvolume||0}}m³ {{shopData.vweight||0}}Kg {{shopData.warehouseInInfoVO ? shopData.warehouseInInfoVO.quantityAll : shopData.quantity}}{{$t('')}}</span>
</el-form-item> </el-form-item>
</el-row> </el-row>
<el-row> <el-row>
...@@ -1196,9 +1196,13 @@ ...@@ -1196,9 +1196,13 @@
} }
} }
if((this.orderExceptionData.orderExceptionType=='not_shipping_channel_exception')||this.orderExceptionData.orderExceptionType=='line_loop_exception'){ if((this.orderExceptionData.orderExceptionType=='not_shipping_channel_exception')||this.orderExceptionData.orderExceptionType=='line_loop_exception'){
this.handlerParams.orderItemVOList = this.orderData.orderItemVOList if(this.orderExceptionData.orderExceptionType=='line_loop_exception'){
this.handlerParams.orderItemVOList = this.loopOrderItem
}else{
this.handlerParams.orderItemVOList = this.orderData.orderItemVOList
}
this.handlerParams.channelPriceList = [] this.handlerParams.channelPriceList = []
this.orderData.orderItemVOList.map(v=>{ this.handlerParams.orderItemVOList.map(v=>{
var listItem = { var listItem = {
orderId:v.orderId, orderId:v.orderId,
orderItemId:v.orderItemId, orderItemId:v.orderItemId,
......
...@@ -95,6 +95,13 @@ ...@@ -95,6 +95,13 @@
<el-form-item :label="$t('出货渠道')" prop="number"> <el-form-item :label="$t('出货渠道')" prop="number">
<selector :options="channelList" :label-field="$l('name')" value-field="channelId" v-model="queryParams.channelId"></selector> <selector :options="channelList" :label-field="$l('name')" value-field="channelId" v-model="queryParams.channelId"></selector>
</el-form-item> </el-form-item>
<el-form-item :label="$t('特需')" prop="packageType">
<el-select v-model="queryParams.packageTypeArr" multiple :placeholder="$t('请选择')" clearable >
<template v-for="item in getDictDatas(DICT_TYPE.ORDER_SPECIAL_NEEDS)">
<el-option :label="$l(item, 'label')" :value="item.value"></el-option>
</template>
</el-select>
</el-form-item>
<el-form-item> <el-form-item>
<el-button type="primary" icon="el-icon-search" @click="handleQuery">{{$t('搜索')}}</el-button> <el-button type="primary" icon="el-icon-search" @click="handleQuery">{{$t('搜索')}}</el-button>
<el-button icon="el-icon-refresh" @click="resetQuery">{{$t('重置')}}</el-button> <el-button icon="el-icon-refresh" @click="resetQuery">{{$t('重置')}}</el-button>
...@@ -213,9 +220,11 @@ import {getWarehouseList} from '@/api/ecw/warehouse' ...@@ -213,9 +220,11 @@ import {getWarehouseList} from '@/api/ecw/warehouse'
import { getCurrencyPage } from "@/api/ecw/currency"; import { getCurrencyPage } from "@/api/ecw/currency";
import SplitRevoke from "@/views/ecw/order/components/SplitRevoke"; import SplitRevoke from "@/views/ecw/order/components/SplitRevoke";
import {getChannelList} from "@/api/ecw/channel"; import {getChannelList} from "@/api/ecw/channel";
import Template from "@/views/cms/template/index.vue";
export default { export default {
name: "EcwOrderStockinglist", name: "EcwOrderStockinglist",
components: { components: {
Template,
UserSelector, UserSelector,
FeeApplication, FeeApplication,
BatchSingleApplication, BatchSingleApplication,
...@@ -305,8 +314,12 @@ export default { ...@@ -305,8 +314,12 @@ export default {
/** 查询列表 */ /** 查询列表 */
getList() { getList() {
this.loading = true; this.loading = true;
const query = {...this.combinedQueryParams}
if(query.packageTypeArr && query.packageTypeArr.length){
query.packageType = query.packageTypeArr.join(',')
}
// 执行查询 // 执行查询
canShipmentPage(this.combinedQueryParams).then(response => { canShipmentPage(query).then(response => {
// 部分情况下,订单后面的操作下拉菜单会显示按钮,但是下来没有选项,在elTable组件更新的时候会导致渲染错误,所以要在更新渲染前清空一次list让table彻底重新渲染,避免部分更新导致异常 // 部分情况下,订单后面的操作下拉菜单会显示按钮,但是下来没有选项,在elTable组件更新的时候会导致渲染错误,所以要在更新渲染前清空一次list让table彻底重新渲染,避免部分更新导致异常
this.list = [] this.list = []
this.$nextTick(() => { this.$nextTick(() => {
......
<template> <template>
<div v-if="order"> <div v-if="order" style="width: 1120px">
<div class="wrapper flex w-1000 pb-20" style="margin:auto"> <div style="display: flex;justify-content: space-around;margin-top: 30px;">
<div class="icon"> <div class="el-icon-check" style="font-size: 100px;color: #67C23A;" />
<img src="../../../assets/svg/success.svg" /> <div>
</div> <el-row>
<div class="flex-1"> <span style="font-weight: bold;font-size: 18px;">{{ $t('新建订单成功') }}</span>
<div class="title">{{$t('新增订单生成成功')}}</div> </el-row>
<div class="line bold font-lg">{{$t('订单号')}}{{order.orderNo}}</div> <el-row style="margin-top: 10px;">
<div class="line">{{$t('唛头')}}{{order.marks}}</div> <span style="font-size: 16px; font-weight: bold; color: #666;">{{ $t('您的订舱号') }}{{ order.orderNo }}</span>
</el-row>
<el-row style="margin-top: 10px;">
<span style="font-size: 14px;color: #666;">{{ $t('唛头') }}{{ order.marks }}</span>
</el-row>
<el-row v-if="order.channelId" style="margin-top: 10px;">
<span style="font-size: 14px;color: #666;">{{ $t('出货渠道') }}{{ order.channelName }}</span>
</el-row>
<el-row style="margin-top: 10px;">
<span style="font-size: 14px;color: #666;">{{ $t('路线') }}{{ $l(order.logisticsInfoDto, 'startTitle') }} >> {{ $l(order.logisticsInfoDto, 'destTitle') }}</span>
</el-row>
<el-row style="margin-top: 10px;">
<span style="font-size: 14px;color: #666;">{{ $t('单证报关') }}<dict-tag :type="DICT_TYPE.ECW_CUSTOMS_TYPE" :value="order.customsType" /></span>
</el-row>
<el-row style="margin-top: 10px;">
<span style="font-size: 14px;color: #666;">{{ $t('是否控货') }}<dict-tag :type="DICT_TYPE.INFRA_BOOLEAN_STRING" :value="order.isCargoControl" /></span>
</el-row>
<div class="flex"> <el-row style="margin-top: 10px;">
<div class="line flex-1">{{$t('运输方式')}}<dict-tag :type="DICT_TYPE.ECW_TRANSPORT_TYPE" :value="order.transportId" /></div> <span style="font-size: 14px;color: #666;">
<div class="line flex-1" v-if="order.channelName">{{$t('出货渠道')}}{{order.channelName}}</div> {{ $t('商品列表') }}
</div> <span v-for="(item, index) in order.orderItemVOList" :key="index">
<div class="flex"> {{ $l(item, 'prodTitle') }}
<div class="line flex-1">{{$t('路线')}}{{$l(order.logisticsInfoDto, 'startTitle')}} >> {{$l(order.logisticsInfoDto, 'destTitle')}}</div> <template v-if="index < order.orderItemVOList.length - 1">{{ $t('') }}</template>
<div class="line flex-1">{{$t('单证报关')}}<dict-tag :type="DICT_TYPE.ECW_CUSTOMS_TYPE" :value="order.customsType" /></div> </span>
</div> </span>
</el-row>
<el-row style="margin-top: 10px;">
<span style="font-size: 14px;color: #666;">{{ $t('总件数') }}:{{ order.costVO.totalNum }}</span>
</el-row>
<div class="line">{{$t('商品列表')}} <el-row style="margin-top: 30px;">
<span v-for="(item, index) in order.orderItemVOList" :key="index"> <span style="font-size: 14px;color: #666;">{{ $t('仓库地址') }}:{{ order.logisticsInfoDto.startAddressZh }}</span>
{{$l(item, 'prodTitle')}} </el-row>
<template v-if="index < order.orderItemVOList.length - 1">{{ $t('') }}</template> <el-row style="margin-top: 10px;">
</span> <span style="font-size: 14px;color: #666;">{{ $t('仓库电话') }}:{{ order.logisticsInfoDto.startTell }}</span>
</div> </el-row>
<div class="line">{{$t('总件数')}}:{{order.costVO.totalNum}}</div> <el-row style="margin-top: 10px;">
</div> <span style="font-size: 14px;color: #666;">{{ $t('为保证入仓数据准确性,入仓请带上一份装箱单(品名,件数,毛重,尺寸方数,是否有牌)') }}</span>
</div> </el-row>
<div class="w-800" style="margin: auto"> <el-row style="margin-top: 20px;">
<div class="line mt-20">{{$t('仓库地址')}}:{{$l(order.logisticsInfoDto, 'startAddress')}}</div> <span style="text-decoration: underline;font-size: 14px;color: #999;">{{ $t('您的订单已提交,谢谢您选择捷道物流!') }}</span>
<div class="line">{{$t('仓库电话')}}: {{order.logisticsInfoDto.startTell}}</div> </el-row>
<!-- v1.7新增 -->
<div class="line">{{$t('为保证入仓数据准确性,入仓请带上一份装箱单(品名,件数,毛重,尺寸方数,是否有牌)')}}</div>
<div class="line"></div>
<div class="line">{{$t('您的订单已提交,谢谢您选择捷道物流!')}}</div>
</div> </div>
</div>
<div class="actions mt-50"> <div class="actions mt-50">
<el-button type="primary" @click="$redirect('detail?orderId=' + order.orderId)">{{$t('查看订单')}}</el-button> <el-button type="primary" @click="$redirect('detail?orderId=' + order.orderId)">{{$t('查看订单')}}</el-button>
<el-button type="warning" @click="showNotice = true">{{$t('入仓须知')}}</el-button> <el-button type="warning" @click="showNotice = true">{{$t('入仓须知')}}</el-button>
<el-button type="info" @click="$redirect('create')">{{$t('再来一单')}}</el-button> <el-button type="info" @click="$redirect('create')">{{$t('再来一单')}}</el-button>
<el-button class="copy-btn" :data-clipboard-text="orderInfoForCopy">{{$t('复制订单信息')}}</el-button>
</div> </div>
<el-dialog :title="$t('查看须知')" :visible.sync="showNotice" width="700px"> <el-dialog :title="$t('查看须知')" :visible.sync="showNotice" width="700px">
...@@ -55,6 +73,9 @@ import {getOrder} from '@/api/ecw/order' ...@@ -55,6 +73,9 @@ import {getOrder} from '@/api/ecw/order'
import FileSaver from 'file-saver' import FileSaver from 'file-saver'
import {dataURLtoBlob} from '@/utils/index' import {dataURLtoBlob} from '@/utils/index'
import NeedKnow from '@/components/NeedKnow' import NeedKnow from '@/components/NeedKnow'
import ClipboardJS from "clipboard";
let clipboard;
export default { export default {
components: {NeedKnow}, components: {NeedKnow},
...@@ -65,16 +86,32 @@ export default { ...@@ -65,16 +86,32 @@ export default {
// noticeUrl: 'http://v4.groupage.cn/Public/images/notice.png' // noticeUrl: 'http://v4.groupage.cn/Public/images/notice.png'
} }
}, },
created(){ computed:{
this.loadData() orderInfoForCopy(){
return `订单号:${this.order.orderNo}\n唛头:${this.order.marks}\n提货点:${this.order.logisticsInfoDto?.destTitleZh}\n送货地址:${this.order.logisticsInfoDto?.startAddressZh}`
}
},
async created(){
await this.loadData()
await this.$nextTick()
clipboard = new ClipboardJS('.copy-btn')
clipboard.on('success', () => {
this.$message.success(this.$t('复制成功'))
})
clipboard.on('error', () => {
this.$message.error(this.$t('复制失败'))
})
},
destroyed() {
clipboard.destroy()
}, },
methods:{ methods:{
loadData(){ async loadData(){
getOrder(this.$route.query.orderId) await getOrder(this.$route.query.orderId)
.then(res => { .then(res => {
this.order = res.data this.order = res.data
}) })
} }
} }
} }
</script> </script>
......
...@@ -52,6 +52,20 @@ ...@@ -52,6 +52,20 @@
{{orderData.consigneeVO?((orderData.consigneeVO.countryCode?checkCode(orderData.consigneeVO.countryCode):'')+orderData.consigneeVO.phone)||$t(''):$t('')}} {{orderData.consigneeVO?((orderData.consigneeVO.countryCode?checkCode(orderData.consigneeVO.countryCode):'')+orderData.consigneeVO.phone)||$t(''):$t('')}}
</el-descriptions-item> </el-descriptions-item>
</el-descriptions> </el-descriptions>
<el-descriptions :column="4">
<el-descriptions-item :label="$t('仓库实测')">
<span style="margin-right:10px">{{(orderData.sumNum||0)+$t('')}}</span>
<span style="margin-right:10px">{{(orderData.sumVolume||0)+''}}</span>
<span style="margin-right:10px">{{(orderData.sumWeight||0)+'kg '}}</span>
<span>{{(orderData.sumQuantity||0) +$t('')}}</span>
</el-descriptions-item>
<el-descriptions-item :label="$t('收费参数')">
<span style="margin-right:10px">{{(orderData.sumNum||0)+$t('')}}</span>
<span style="margin-right:10px">{{(orderData.wvolume||0)+''}}</span>
<span style="margin-right:10px">{{(orderData.vweight||0)+'kg '}}</span>
<span>{{(orderData.sumQuantity||0) +$t('')}}</span>
</el-descriptions-item>
</el-descriptions>
</el-card> </el-card>
<el-card class="card"> <el-card class="card">
<!-- 列表 --> <!-- 列表 -->
......
...@@ -7,28 +7,41 @@ export default { ...@@ -7,28 +7,41 @@ export default {
data(){ data(){
return { return {
phoneList:[], phoneList:[],
show:false
} }
}, },
mounted() { mounted() {
let phone = this.phoneString let phone = this.phoneString
this.phoneList = phone.split('(;)'); this.phoneList = phone.split('(;)');
console.log(this.phoneList)
} }
} }
</script> </script>
<template> <template>
<div> <div>
<div v-for="(item, index) in phoneList" :key="index" > <el-dialog :modal-append-to-body="false" :append-to-body="true" :visible.sync="show">
<div> <div v-for="(item, index) in phoneList" :key="index" >
<span>联系人{{index + 1}}</span> <div>
<span>{{item.split('(@)')[1]}}</span> <span>联系人{{index + 1}}</span>
<span>{{item.split('(@)')[1]}}</span>
</div>
<div>
<span>联系电话{{index + 1}}</span>
<span>{{item.split('(@)')[0]}}</span>
</div>
</div>
</el-dialog>
<div>
<div>
<span>联系人:</span>
<span>{{phoneList[0] ? phoneList[0].split('(@)')[1] : ''}}</span>
</div>
<div style="white-space: normal;">
<span>联系电话:</span>
<span>{{phoneList[0] ? phoneList[0].split('(@)')[0] : ''}}</span>
<el-button v-if="phoneList.length > 1" @click="show = true;" style="margin-left: 10px;" size="mini" type="text" >更多</el-button>
</div> </div>
<div> </div>
<span>联系电话{{index + 1}}</span>
<span>+{{item.split('(@)')[0]}}</span>
</div>
</div>
</div> </div>
</template> </template>
......
...@@ -45,7 +45,7 @@ ...@@ -45,7 +45,7 @@
<el-table-column <el-table-column
:label="$t('客户号码')"> :label="$t('客户号码')">
<template v-slot="{row}"> <template v-slot="{row}">
<show-contacts :phone-string="row.phone" ></show-contacts> <show-contacts :key="row.phone" :phone-string="row.phone" ></show-contacts>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column <el-table-column
...@@ -79,10 +79,10 @@ ...@@ -79,10 +79,10 @@
:label="$t('客户名称')"> :label="$t('客户名称')">
</el-table-column> </el-table-column>
<el-table-column <el-table-column
width="210" width="260"
:label="$t('客户号码')"> :label="$t('客户号码')">
<template v-slot="{row}"> <template v-slot="{row}">
<show-contacts :phone-string="row.phone" ></show-contacts> <show-contacts :key="row.phone" :phone-string="row.phone" ></show-contacts>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column <el-table-column
......
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