Commit 7a97d657 authored by Marcus's avatar Marcus

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

parents c6afaddd 2fd54c8f
import Cookies from 'js-cookie'
const TokenKey = 'Admin-Token'
const TokenKey = 'Jd-Admin-Token'
export function getToken() {
return Cookies.get(TokenKey)
......
......@@ -233,7 +233,10 @@ export const DICT_TYPE = {
SETTLEMENT_STATUS: 'settlement_status', // 结算状态
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'//商品渠道清关费,
}
/**
......
......@@ -184,6 +184,10 @@ export default {
case "cusDeclaration":
this.$set(this.dialogConfig, "width", "700px");
break;
// 清关
case "cusClearance":
this.$set(this.dialogConfig, "width", "700px");
break;
// AGENT
case "agent":
this.$set(this.dialogConfig, "title", this.$t("代理商设置"));
......
......@@ -3,7 +3,10 @@
<template v-if="!readonly">
<el-row type="flex" align="align" :gutter="10" >
<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">
<slot></slot>
</el-col>
......@@ -61,6 +64,7 @@ import CurrencySelect from "@/views/ecw/channel/componrnts/currency-select.vue";
import {getUnitList} from "@/api/ecw/unit";
import WeightSelect from "@/views/ecw/channel/componrnts/weight-select.vue";
import Template from "@/views/cms/template/index.vue";
import {getDictDatas} from "@/utils/dict";
export default {
props:{
value:{
......@@ -76,6 +80,8 @@ export default {
name: "packaging-type",
components: {Template, WeightSelect, CurrencySelect},
created() {
console.log(this.getDictDatas(this.DICT_TYPE.AIR_CUSTOM_CLEARANCE),'123')
getCurrencyPage(this.params).then(res => this.currencyList = res.data.list)
getUnitList().then(res => this.unitList = res.data)
},
......@@ -90,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() {
this.value1 = this.value
this.$nextTick(()=>{
......
......@@ -19,12 +19,6 @@
</el-select> -->
<dict-selector :type="DICT_TYPE.CUSTOMER_ESOURCE_TYPE" v-model="queryParams.customerType" :placeholder="$t('请选择资源类型')" clearable ></dict-selector>
</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-select clearable v-model="queryParams.customerService" clearable size="small">
<el-option :label="$t('下单时间')" value="createTime"/>
......@@ -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-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="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>
......@@ -129,6 +148,7 @@
import {getChannelList} from '@/api/ecw/channel';
import dayjs from "dayjs";
import {listServiceUser} from "@/api/system/user";
import {getWarehouseList} from '@/api/ecw/warehouse'
export default {
name: "EcwDepttargetAllachievement",
......@@ -204,7 +224,8 @@
sumVolume:0,
sumNum:0,
},
myAchievementData:{}
myAchievementData:{},
warehouseList:[]
};
},
computed: {
......@@ -218,7 +239,14 @@
}
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() {
this.getChannelList();
......@@ -230,6 +258,7 @@
listServiceUser().then(r=>{
this.customerServiceList = r.data;
})
getWarehouseList().then(res => this.warehouseList = res.data)
},
methods: {
getChannelList() {
......
......@@ -164,7 +164,7 @@
import {listDept, listSimpleDepts} from "@/api/system/dept";
import {getChannelList} from '@/api/ecw/channel';
import dayjs from "dayjs";
import { parseTime } from '@/utils/ruoyi';
import { parseTime } from '@/utils/ruoyi';
import Template from "@/views/cms/template/index.vue";
export default {
......@@ -234,7 +234,8 @@ import { parseTime } from '@/utils/ruoyi';
cubeNum: [{required: true, message: this.$t("立方数不能为空"), trigger: "blur"}],
startTime: [{required: true, message: this.$t("起始时间不能为空"), trigger: "change"}],
endTime: [{required: true, message: this.$t("截止时间不能为空"), trigger: "change"}],
}
},
};
},
computed: {
......
......@@ -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-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="resetQuery">{{$t('重置')}}</el-button>
<!-- <el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport" :loading="exportLoading"
......@@ -125,6 +150,7 @@
import {getChannelList} from '@/api/ecw/channel';
import dayjs from "dayjs";
import {listServiceUser} from "@/api/system/user";
import {getWarehouseList} from '@/api/ecw/warehouse'
export default {
name: "EcwDepttargetMyachievement",
......@@ -200,7 +226,8 @@
sumVolume:0,
sumNum:0,
},
myAchievementData:{}
myAchievementData:{},
warehouseList:[]
};
},
computed: {
......@@ -214,7 +241,14 @@
}
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() {
this.getChannelList();
......
......@@ -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-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="warning" plain icon="el-icon-download" size="mini" @click="handleExport" :loading="exportLoading"
>{{$t('导出')}}</el-button> -->
......@@ -125,6 +150,7 @@
import {getChannelList} from '@/api/ecw/channel';
import dayjs from "dayjs";
import {listServiceUser} from "@/api/system/user";
import {getWarehouseList} from '@/api/ecw/warehouse'
export default {
name: "EcwDepttargetMydeptachievement",
......@@ -200,7 +226,8 @@
sumVolume:0,
sumNum:0,
},
myAchievementData:{}
myAchievementData:{},
warehouseList:[]
};
},
computed: {
......@@ -214,7 +241,14 @@
}
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() {
this.getChannelList();
......
......@@ -141,9 +141,10 @@
<div>
{{$t('运费')}}{{row.oneSeaFreight}} {{currentcyMap[row.seaFreightCurrency]}} / {{unitMap[row.seaFreightVolume]}}
</div>
<div>
<div v-if="row.oneClearanceFreight">
{{$t('清关费')}}{{row.oneClearanceFreight}} {{currentcyMap[row.clearanceFreightCurrency]}} / {{unitMap[row.clearanceFreightVolume]}}
</div>
<div v-else>{{$t('清关费未报价')}}</div>
</template>
</template>
</el-table-column>
......
......@@ -114,7 +114,7 @@
</el-row>
<el-row v-if="orderExceptionData.orderExceptionType=='order_pay_exception'||orderExceptionData.orderExceptionType!='goods_add_exception'">
<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-row>
<el-row>
......@@ -1196,9 +1196,13 @@
}
}
if((this.orderExceptionData.orderExceptionType=='not_shipping_channel_exception')||this.orderExceptionData.orderExceptionType=='line_loop_exception'){
if(this.orderExceptionData.orderExceptionType=='line_loop_exception'){
this.handlerParams.orderItemVOList = this.loopOrderItem
}else{
this.handlerParams.orderItemVOList = this.orderData.orderItemVOList
}
this.handlerParams.channelPriceList = []
this.orderData.orderItemVOList.map(v=>{
this.handlerParams.orderItemVOList.map(v=>{
var listItem = {
orderId:v.orderId,
orderItemId:v.orderItemId,
......
<template>
<div v-if="order">
<div class="wrapper flex w-1000 pb-20" style="margin:auto">
<div class="icon">
<img src="../../../assets/svg/success.svg" />
</div>
<div class="flex-1">
<div class="title">{{$t('新建订单成功')}}</div>
<div class="line bold font-lg">{{$t('订单号')}}{{order.orderNo}}</div>
<div class="line">{{$t('唛头')}}{{order.marks}}</div>
<div class="flex">
<div class="line flex-1">{{$t('运输方式')}}<dict-tag :type="DICT_TYPE.ECW_TRANSPORT_TYPE" :value="order.transportId" /></div>
<div class="line flex-1" v-if="order.channelName">{{$t('出货渠道')}}{{order.channelName}}</div>
</div>
<div class="flex">
<div class="line flex-1">{{$t('路线')}}{{$l(order.logisticsInfoDto, 'startTitle')}} >> {{$l(order.logisticsInfoDto, 'destTitle')}}</div>
<div class="line flex-1">{{$t('单证报关')}}<dict-tag :type="DICT_TYPE.ECW_CUSTOMS_TYPE" :value="order.customsType" /></div>
</div>
<div class="line">{{$t('控货')}}<dict-tag :type="DICT_TYPE.INFRA_BOOLEAN_STRING" :value="order.isCargoControl" /></div>
<div v-if="order" style="width: 1120px">
<div style="display: flex;justify-content: space-around;margin-top: 30px;">
<div class="el-icon-check" style="font-size: 100px;color: #67C23A;" />
<div>
<el-row>
<span style="font-weight: bold;font-size: 18px;">{{ $t('新建订单成功') }}</span>
</el-row>
<el-row style="margin-top: 10px;">
<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="line">{{$t('商品列表')}}
<el-row style="margin-top: 10px;">
<span style="font-size: 14px;color: #666;">
{{ $t('商品列表') }}
<span v-for="(item, index) in order.orderItemVOList" :key="index">
{{$l(item, 'prodTitle')}}
{{ $l(item, 'prodTitle') }}
<template v-if="index < order.orderItemVOList.length - 1">{{ $t('') }}</template>
</span>
</span>
</el-row>
<el-row style="margin-top: 10px;">
<span style="font-size: 14px;color: #666;">{{ $t('总件数') }}:{{ order.costVO.totalNum }}</span>
</el-row>
<el-row style="margin-top: 30px;">
<span style="font-size: 14px;color: #666;">{{ $t('仓库地址') }}:{{ order.logisticsInfoDto.startAddressZh }}</span>
</el-row>
<el-row style="margin-top: 10px;">
<span style="font-size: 14px;color: #666;">{{ $t('仓库电话') }}:{{ order.logisticsInfoDto.startTell }}</span>
</el-row>
<el-row style="margin-top: 10px;">
<span style="font-size: 14px;color: #666;">{{ $t('为保证入仓数据准确性,入仓请带上一份装箱单(品名,件数,毛重,尺寸方数,是否有牌)') }}</span>
</el-row>
<el-row style="margin-top: 20px;">
<span style="text-decoration: underline;font-size: 14px;color: #999;">{{ $t('您的订单已提交,谢谢您选择捷道物流!') }}</span>
</el-row>
</div>
<div class="line">{{$t('总件数')}}:{{order.costVO.totalNum}}</div>
</div>
</div>
<div class="w-800" style="margin: auto">
<div class="line mt-20">{{$t('仓库地址')}}:{{$l(order.logisticsInfoDto, 'startAddress')}}</div>
<div class="line">{{$t('仓库电话')}}: {{order.logisticsInfoDto.startTell}}</div>
<!-- v1.7新增 -->
<div class="line">{{$t('为保证入仓数据准确性,入仓请带上一份装箱单(品名,件数,毛重,尺寸方数,是否有牌)')}}</div>
<div class="line"></div>
<div class="line">{{$t('您的订单已提交,谢谢您选择捷道物流!')}}</div>
</div>
<div class="actions mt-50">
<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="info" @click="$redirect('create')">{{$t('再来一单')}}</el-button>
<el-button class="copy-btn" :data-clipboard-text="orderInfoForCopy">{{$t('复制订单信息')}}</el-button>
</div>
<el-dialog :title="$t('查看须知')" :visible.sync="showNotice" width="700px">
......@@ -56,6 +73,9 @@ import {getOrder} from '@/api/ecw/order'
import FileSaver from 'file-saver'
import {dataURLtoBlob} from '@/utils/index'
import NeedKnow from '@/components/NeedKnow'
import ClipboardJS from "clipboard";
let clipboard;
export default {
components: {NeedKnow},
......@@ -66,12 +86,28 @@ export default {
// noticeUrl: 'http://v4.groupage.cn/Public/images/notice.png'
}
},
created(){
this.loadData()
computed:{
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:{
loadData(){
getOrder(this.$route.query.orderId)
async loadData(){
await getOrder(this.$route.query.orderId)
.then(res => {
this.order = res.data
})
......
......@@ -27,7 +27,7 @@ export default {
</div>
<div>
<span>联系电话{{index + 1}}</span>
<span>+{{item.split('(@)')[0]}}</span>
<span>{{item.split('(@)')[0]}}</span>
</div>
</div>
</el-dialog>
......@@ -38,7 +38,7 @@ export default {
</div>
<div style="white-space: normal;">
<span>联系电话:</span>
<span>+{{phoneList[0] ? phoneList[0].split('(@)')[0] : ''}}</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>
......
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