Commit 9b7ea5fa authored by dragondean@qq.com's avatar dragondean@qq.com

Merge branch 'dev' into release

# Conflicts:
#	src/views/ecw/box/shippingAir/nodePage/tally/index.vue
parents 7fdb0012 e511fa0d
...@@ -6,7 +6,7 @@ VUE_APP_TITLE = 捷道管理系统-测试站 ...@@ -6,7 +6,7 @@ VUE_APP_TITLE = 捷道管理系统-测试站
# 捷道管理系统/开发环境 # 捷道管理系统/开发环境
VUE_APP_BASE_API = 'https://api.jd.jdshangmen.com' VUE_APP_BASE_API = 'https://apitest.groupage.cn'
# 路由懒加载 # 路由懒加载
VUE_CLI_BABEL_TRANSPILE_MODULES = true VUE_CLI_BABEL_TRANSPILE_MODULES = true
...@@ -18,4 +18,4 @@ VUE_APP_TENANT_ENABLE = false ...@@ -18,4 +18,4 @@ VUE_APP_TENANT_ENABLE = false
VUE_APP_DOC_ENABLE = true VUE_APP_DOC_ENABLE = true
# 百度统计 # 百度统计
VUE_APP_BAIDU_CODE = fadc1bd5db1a1d6f581df60a1807f8ab VUE_APP_BAIDU_CODE = fadc1bd5db1a1d6f581df60a1807f8ab
\ No newline at end of file
...@@ -99,7 +99,7 @@ let autoTransCnt = 0 ...@@ -99,7 +99,7 @@ let autoTransCnt = 0
async function translate(obj){ async function translate(obj){
// 对未翻译内容调用百度翻译进行翻译操作,有变量的不做处理 // 对未翻译内容调用百度翻译进行翻译操作,有变量的不做处理
for(let text in obj){ for(let text in obj){
if(obj[text] || text.includes('{'))continue if(obj[text] || text.trim() === '')continue
try{ try{
const textEn = await translateText(text) const textEn = await translateText(text)
console.log(`${text} => ${textEn}\n`) console.log(`${text} => ${textEn}\n`)
......
...@@ -402,4 +402,109 @@ export function downloadLoadGoods(params) { ...@@ -402,4 +402,109 @@ export function downloadLoadGoods(params) {
timeout: 120000, timeout: 120000,
params, params,
}) })
}
/**
* 创建理货和合包标签
*
* @export
* @param {*} data
* @return {*}
*/
export function checkInfoSingleCreate(data) {
return request({
url: `/ecw/box-order-check-info/singleCreate`,
method: "post",
data: data
});
}
/**
* 批量创建理货和合包标签
*
* @export
* @param {*} data
* @return {*}
*/
export function checkInfoBatchCreate(data) {
return request({
url: `/ecw/box-order-check-info/batchCreate`,
method: "post",
data: data
});
}
/**
* 删除理货和合包标签
*
* @export
* @param {*} data
* @return {*}
*/
export function checkInfoSingleDelete(data) {
return request({
url: `/ecw/box-order-check-info/singleDelete`,
method: "post",
data: data
});
}
/**
* 批量删除理货和合包标签
*
* @export
* @param {*} data
* @return {*}
*/
export function checkInfoBatchDelete(data) {
return request({
url: `/ecw/box-order-check-info/batchDelete`,
method: "post",
data: data
});
}
/**
* 获取订单理货,合包编号列表
*
* @export
* @param {*} data
* @return {*}
*/
export function getOrderTagList(params) {
return request({
url: `/ecw/box-order-check-info/orderTagList`,
method: "get",
params
});
}
/**
* 根据箱号、订单号查找订单号码,理货和合包使用
*
* @export
* @param {*} data
* @return {*}
*/
export function searchLoadOrderByBoxNo(data) {
return request({
url: `/ecw/box-order-check-info/searchLoadOrderByBoxNo`,
method: "post",
data: data
});
}
/**
* 确认出仓
*
* @export
* @param {*} data
* @return {*}
*/
export function confirmAirCheckout(params) {
return request({
url: `/ecw/box-air-checkout/confirmAirCheckout`,
method: "get",
params
});
} }
\ No newline at end of file
...@@ -42,7 +42,13 @@ export function getChannelPage(query) { ...@@ -42,7 +42,13 @@ export function getChannelPage(query) {
params: query params: query
}) })
} }
//启用-禁用渠道
export function channelSwitch(id){
return request({
url:`/ecw/channel/switch/${id}`,
method:'put'
})
}
// 获得渠道列表 TODO // 获得渠道列表 TODO
export function getChannelList(query) { export function getChannelList(query) {
return request({ return request({
...@@ -62,7 +68,7 @@ export function exportChannelExcel(query) { ...@@ -62,7 +68,7 @@ export function exportChannelExcel(query) {
}) })
} }
// //
export function getChannelListByIds(params){ export function getChannelListByIds(params){
return request({ return request({
url: '/ecw/channel/list', url: '/ecw/channel/list',
......
...@@ -81,3 +81,36 @@ export function getCustomerContactsListByCustomer(query) { ...@@ -81,3 +81,36 @@ export function getCustomerContactsListByCustomer(query) {
return Promise.resolve() return Promise.resolve()
} }
} }
//全部列表数据
export function warehouseLinePage(params){
return request({
url:'/ecw/warehouse-line/page',
method:'get',
params,
})
}
//获得空运线路模板
export function getAirLineChannelTemplateList(params){
return request({
url:'/ecw/warehouse-line/get-air-line-channel-template-list',
method:'get',
params
})
}
// 根据线路id渠道列表和清关费(复制使用)
export function getAirLineChannelPackagingList(id){
return request({
url:'/ecw/warehouse-line/get-air-line-channel-packaging-list',
method:'get',
params:{lineId:id}
})
}
// 创建仓库线路的渠道包装
export function createWarehouseLineChannelPackaging(data){
return request({
url:'/ecw/warehouse-line/create-warehouse-line-channel-packaging',
method:'put',
data
})
}
...@@ -1032,3 +1032,25 @@ export function getOrderItemCommonAttr(orderId, excludeOrderWarehouseInId){ ...@@ -1032,3 +1032,25 @@ export function getOrderItemCommonAttr(orderId, excludeOrderWarehouseInId){
params: {orderId, excludeOrderWarehouseInId} params: {orderId, excludeOrderWarehouseInId}
}) })
} }
//退仓品名列表
export function getOrderItemDeleted(orderId){
return request({
url: '/ecw/order/order-item-info-when-warehouse-in-deleted/' + orderId,
method: 'get',
})
}
// 打包页面订单数据统计
export function getPackStatistics(orderId){
return request({
url: '/ecw/order/order-packed-page-statistics/' + orderId,
method: 'get'
})
}
//获得订单品名对应的退仓入仓货物详情
export function getOrderWarehouseDeleted(orderId,orderItem){
return request({
url: '/order/order-warehouse-in/get-order-warehouse-in-deleted?orderId=' + orderId+'&orderItemId='+orderItem,
})
}
\ No newline at end of file
...@@ -9,6 +9,14 @@ export function createProductPrice(data) { ...@@ -9,6 +9,14 @@ export function createProductPrice(data) {
}) })
} }
export function createProductPriceAir(data) {
return request({
url: '/ecw/product-price/createAir',
method: 'post',
data: data
})
}
// 更新产品价格 // 更新产品价格
export function updateProductPrice(data) { export function updateProductPrice(data) {
return request({ return request({
...@@ -18,6 +26,15 @@ export function updateProductPrice(data) { ...@@ -18,6 +26,15 @@ export function updateProductPrice(data) {
}) })
} }
// 更新空运价格
export function updateProductPriceAir(data) {
return request({
url: '/ecw/product-price/updateAir',
method: 'put',
data: data
})
}
// 删除产品价格 // 删除产品价格
export function deleteProductPrice(id) { export function deleteProductPrice(id) {
return request({ return request({
...@@ -71,6 +88,15 @@ export function batchUpdateProductPrice(query) { ...@@ -71,6 +88,15 @@ export function batchUpdateProductPrice(query) {
}) })
} }
// 批量修改空运产品价格
export function batchUpdateProductPriceAir(data) {
return request({
url: '/ecw/product-price/batchUpdate',
method: 'put',
data
})
}
// 批量拉黑 // 批量拉黑
export function batchBlock(query) { export function batchBlock(query) {
return request({ return request({
...@@ -124,3 +150,12 @@ export function batchAddPrice(data) { ...@@ -124,3 +150,12 @@ export function batchAddPrice(data) {
data data
}) })
} }
// 批量加价空运
export function batchAddPriceAir(data) {
return request({
url: '/ecw/product-price/batchAddPriceAir',
method: 'put',
data
})
}
...@@ -98,6 +98,14 @@ export function getTradeCityList(query) { ...@@ -98,6 +98,14 @@ export function getTradeCityList(query) {
params: query params: query
}) })
} }
// 获得目的地国家
export function getTradeCountryList(query) {
return request({
url: '/ecw/region/getTradeCountryList',
method: 'get',
params: query
})
}
export function listByIds(params){ export function listByIds(params){
...@@ -106,4 +114,4 @@ export function listByIds(params){ ...@@ -106,4 +114,4 @@ export function listByIds(params){
method: 'get', method: 'get',
params params
}) })
} }
\ No newline at end of file
...@@ -12,8 +12,8 @@ ...@@ -12,8 +12,8 @@
<el-input v-model="queryParams.titleZh" :placeholder="$t('产品关键字')" style="width:120px" clearable :disabled="loading"/> <el-input v-model="queryParams.titleZh" :placeholder="$t('产品关键字')" style="width:120px" clearable :disabled="loading"/>
<el-button type="primary" @click="reLoad" :loading="loading">{{$t('搜索')}}</el-button> <el-button type="primary" @click="reLoad" :loading="loading">{{$t('搜索')}}</el-button>
<div> <div style="height: 36px; display: flex; align-items: center">
<el-checkbox :label="$t('全选') + `(${$t('{total}个', {total})})`" @change="toggleAll" :disabled="isAllProduct || loading"></el-checkbox> <el-checkbox :label="$t('全选') + `(${$t('{total}个', {total})})`" @change="toggleAll" v-model="isCheckedAll" :disabled="isAllProduct || loading"></el-checkbox>
</div> </div>
</div> </div>
<div class="list"> <div class="list">
...@@ -27,18 +27,28 @@ ...@@ -27,18 +27,28 @@
</div> </div>
<div class="flex-1 ml-10"> <div class="flex-1 ml-10">
<el-card style="height:100%"> <el-card style="height:100%">
<div slot="header" class="header flex"> <div slot="header" class="header">
<div class="flex-1 flex items-center">{{$t('已选{cnt}个产品', {cnt: choosedList.length})}}</div> <el-select v-model="selectedFilterParams.typeId" :placeholder="$t('选择类型')" style="width:120px" clearable :disabled="loading">
<el-option v-for="item in typeList" :key="item.id" :label="item.titleZh" :value="item.id" />
</el-select>
<el-select v-model="selectedFilterParams.attrId" :placeholder="$t('选择属性')" style="width:120px" clearable :disabled="loading">
<el-option v-for="item in attrList" :key="item.id" :label="item.attrName" :value="item.id" />
</el-select>
<el-input v-model="selectedFilterParams.titleZh" :placeholder="$t('产品关键字')" style="width:120px" clearable :disabled="loading"/>
<!--<el-button type="primary" @click="reLoad" :loading="loading">{{$t('搜索')}}</el-button>-->
<el-button :disabled="!choosedList.length" type="text" @click="clearAll">{{$t('全部清除')}}</el-button> <div class="flex">
<div class="flex-1 flex items-center">{{$t('已选{cnt}个产品', {cnt: choosedList.length})}}</div>
<el-button :disabled="!choosedList.length" type="text" @click="clearAll">{{$t('全部清除')}}</el-button>
</div>
</div> </div>
<div class="list"> <div class="list">
<div class="item" v-for="(choosed) in selectedList" :key="choosed.id" :data-data="JSON.stringify(choosed)"> <div class="item" v-for="(choosed) in selectedList" :key="choosed.id">
<el-link class="el-icon-delete" @click="remove(choosed)" :disabled="isAllProduct"/> {{choosed.titleZh}} <el-link class="el-icon-delete" @click="remove(choosed)" :disabled="isAllProduct"/> {{choosed.titleZh}}
<div>{{choosed.titleEn}}</div> <div>{{choosed.titleEn}}</div>
</div> </div>
</div> </div>
<el-pagination :total="choosedList.length" :page-sizes="[100, 200, 300, 500]" :page-size="pageSize" @current-change="rightPage = $event" layout="prev, pager, next, total, sizes" :current-page="rightPage" /> <el-pagination :total="filteredList.length" :page-sizes="[100, 200, 300, 500]" :page-size="pageSize" @current-change="rightPage = $event" layout="prev, pager, next, total, sizes" :current-page="rightPage" />
</el-card> </el-card>
</div> </div>
</div> </div>
...@@ -75,6 +85,11 @@ export default { ...@@ -75,6 +85,11 @@ export default {
titleZh: null, titleZh: null,
typeId: null typeId: null
}, },
selectedFilterParams:{
attrId: null,
titleZh: null,
typeId: null
},
choosedList: [], choosedList: [],
typeList: [], typeList: [],
attrList: [], attrList: [],
...@@ -87,7 +102,9 @@ export default { ...@@ -87,7 +102,9 @@ export default {
// 右侧页码 // 右侧页码
rightPage: 1, rightPage: 1,
// 页大小 // 页大小
pageSize: 100 pageSize: 100,
// 是否选中全选
isCheckedAll: false
} }
}, },
computed: { computed: {
...@@ -110,9 +127,24 @@ export default { ...@@ -110,9 +127,24 @@ export default {
currentList(){ currentList(){
return this.list.slice((this.leftPage - 1) * this.pageSize, this.leftPage * this.pageSize) return this.list.slice((this.leftPage - 1) * this.pageSize, this.leftPage * this.pageSize)
}, },
// 已勾选的显示列表 // 已选中 且符合筛选的
filteredList(){
return this.choosedList.filter(item => {
if(this.selectedFilterParams.typeId && item.typeId != this.selectedFilterParams.typeId){
return false
}
if(this.selectedFilterParams.attrId && item.attrId != this.selectedFilterParams.attrId){
return false
}
if(this.selectedFilterParams.titleZh && item.titleZh.indexOf(this.selectedFilterParams.titleZh) == -1){
return false
}
return true
})
},
// 已勾选的显示列表,当前分页显示的
selectedList(){ selectedList(){
return this.choosedList.slice((this.rightPage - 1) * this.pageSize, this.rightPage * this.pageSize) return this.filteredList.slice((this.rightPage - 1) * this.pageSize, this.rightPage * this.pageSize)
} }
}, },
watch: { watch: {
...@@ -131,7 +163,7 @@ export default { ...@@ -131,7 +163,7 @@ export default {
},*/ },*/
defaultIds(newValue, oldValue){ defaultIds(newValue, oldValue){
if(!oldValue || !oldValue.length){ if(!oldValue || !oldValue.length){
this.loadDefaultProds() // this.loadDefaultProds()
} }
}, },
isall(isall){ isall(isall){
...@@ -199,6 +231,8 @@ export default { ...@@ -199,6 +231,8 @@ export default {
let res = await getSimpleProductList(this.queryParams) let res = await getSimpleProductList(this.queryParams)
this.loading = false this.loading = false
this.list = res.data this.list = res.data
this.choosedList = []
this.isCheckedAll = false
}, },
// 获得指定条件的商品的全部ID // 获得指定条件的商品的全部ID
getFilteredIds(){ getFilteredIds(){
...@@ -227,6 +261,7 @@ export default { ...@@ -227,6 +261,7 @@ export default {
async clearAll() { async clearAll() {
await this.$confirm(this.$t('确定要全部清除么?')) await this.$confirm(this.$t('确定要全部清除么?'))
this.choosedList = [] this.choosedList = []
this.isCheckedAll = false
} }
} }
} }
......
...@@ -204,7 +204,8 @@ export default { ...@@ -204,7 +204,8 @@ export default {
this.getOpenedRouterList() this.getOpenedRouterList()
}, },
importCity(){ importCity(){
this.getOpenedRouterList() this.getChannelList()
this.getOpenedRouterList()
}, },
selectedRoutes(val){ selectedRoutes(val){
this.$emit('input', val) this.$emit('input', val)
...@@ -246,7 +247,7 @@ export default { ...@@ -246,7 +247,7 @@ export default {
} }
}, },
async created(){ async created(){
this.channelList = (await getChannelList()).data this.getChannelList()
this.tradeCityList = (await getTradeCityList()).data this.tradeCityList = (await getTradeCityList()).data
// 路线需要过滤失效的进出口城市,所以在程序加载后再加载路线 // 路线需要过滤失效的进出口城市,所以在程序加载后再加载路线
await this.getOpenedRouterList() await this.getOpenedRouterList()
...@@ -268,6 +269,12 @@ export default { ...@@ -268,6 +269,12 @@ export default {
this.inited = true this.inited = true
}, },
methods:{ methods:{
async getChannelList(){
let query = {
cityId: this.importCity
}
this.channelList = (await getChannelList(query)).data
},
getAttrList(){ getAttrList(){
getProductAttrList().then(res => { getProductAttrList().then(res => {
this.attrList = res.data this.attrList = res.data
...@@ -315,7 +322,7 @@ export default { ...@@ -315,7 +322,7 @@ export default {
if(this.getSelectedIndex(router) > -1) return if(this.getSelectedIndex(router) > -1) return
this.selectedRoutes.push({ this.selectedRoutes.push({
lineId: router.id, lineId: router.id,
channelId: router.channel.channelId, shippingChannelId: router.channel.channelId,
transportId: router.transportType transportId: router.transportType
}) })
}else{ }else{
...@@ -328,7 +335,7 @@ export default { ...@@ -328,7 +335,7 @@ export default {
}, },
getSelectedIndex(router){ getSelectedIndex(router){
return this.selectedRoutes.findIndex(item => { return this.selectedRoutes.findIndex(item => {
return item.lineId == router.id && item.channelId == router.channel.channelId return item.lineId == router.id && item.shippingChannelId == router.channel.channelId
}) })
}, },
SpanMethod({ row, column, rowIndex, columnIndex }){ SpanMethod({ row, column, rowIndex, columnIndex }){
......
<template> <template>
<el-select <el-select
v-model="index" v-model="valueSync"
filterable filterable
:clearable="clearable" :clearable="clearable"
remote remote
reserve-keyword reserve-keyword
:placeholder="placeholder ? placeholder : $t('请选择')" :placeholder="placeholder ? placeholder : $t('请选择')"
:loading="loading"> :loading="loading">
<el-option
v-if="prepend"
:label="`${prepend.nickname}`"
:value="prepend.id">
</el-option>
<el-option <el-option
v-for="(item, index) in list" v-for="(item, index) in list"
:key="item.id" :key="item.id"
:label="`${item.nickname}`" :label="`${item.nickname}`"
:value="index"> :value="item.id">
</el-option> </el-option>
</el-select> </el-select>
</template> </template>
...@@ -26,26 +31,23 @@ export default { ...@@ -26,26 +31,23 @@ export default {
manage:{ manage:{
type:Boolean, type:Boolean,
default:false default:false
} },
prepend: Object
}, },
data(){ data(){
return { return {
index: null,
list:[], list:[],
loading: false, loading: false,
size: 20 size: 20,
valueSync: this.value
} }
}, },
watch:{ watch:{
index(val){
this.$emit('input', val !== null && val !== undefined && val != '' ? this.list[val].id : null)
this.$emit('change', val !== null && val !== undefined && val != '' ? this.list[val]: null)
},
value(val){ value(val){
this.resetIndex() this.valueSync = this.value
}, },
list(){ valueSync(val){
this.resetIndex() this.$emit('input', val)
} }
}, },
created(){ created(){
...@@ -60,39 +62,9 @@ export default { ...@@ -60,39 +62,9 @@ export default {
this.list = res.data this.list = res.data
}) })
} }
if(this.value){
// this.init() this.valueSync = this.value
}, }
methods:{
resetIndex(){
let index = this.list.findIndex(item => item.id == this.value)
if(index < 0) this.index = null
else this.index = index
}
/* init(){
console.log('初始化联系人选择', this.value)
if(!this.value) return
let index = this.list.findIndex(item => item.customerContactsId == this.value)
if(index < 0){
getCustomerContactsSelect({ids: this.value}).then(res => {
if(!res.data || !res.data.length){
return this.$message.error('联系人信息获取失败')
}
this.list.unshift(res.data[0])
this.index = 0
})
}
}, */
/* remoteMethod(keyword){
let params = {
size: this.size
}
params.searchKey = keyword
this.loading = true
getCustomerContactsSelect(params)
.then(res => this.list = res.data)
.finally(() => this.loading = false)
} */
} }
} }
</script> </script>
...@@ -3889,7 +3889,7 @@ ...@@ -3889,7 +3889,7 @@
"公司中文名称": "Chinese name of the company", "公司中文名称": "Chinese name of the company",
"展示": "show", "展示": "show",
"无归属订单": "Unassigned Order", "无归属订单": "Unassigned Order",
"最多可放入{quantity}": "", "最多可放入{quantity}": "Up to {quantity} can be placed",
"可放入仓方数": "Number of storage units that can be placed", "可放入仓方数": "Number of storage units that can be placed",
"可放入收费方数": "Number of charging parties that can be placed", "可放入收费方数": "Number of charging parties that can be placed",
"入仓方数": "Number of parties entering the warehouse", "入仓方数": "Number of parties entering the warehouse",
......
...@@ -239,7 +239,7 @@ export const DICT_TYPE = { ...@@ -239,7 +239,7 @@ export const DICT_TYPE = {
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', //渠道清关费 CUSTOM_CLEARANCE:'custom _clearance', //全部列表空运订单重量上限
AIR_COMMODITY_CUSTOM_CLEARANCE:'air_commodity_custom _clearance'//商品渠道清关费, AIR_COMMODITY_CUSTOM_CLEARANCE:'air_commodity_custom _clearance'//商品渠道清关费,
} }
......
...@@ -19,6 +19,13 @@ const service = axios.create({ ...@@ -19,6 +19,13 @@ const service = axios.create({
// 超时 // 超时
timeout: 1000 * 30 timeout: 1000 * 30
}) })
// 如果是生产环境则打印提示
if (process.env.NODE_ENV === 'development' && service.defaults.baseURL === 'https://api2.groupage.cn/admin-api/') {
console.log('%c请注意,当前为生产环境请谨慎操作!!', 'background-color: red; font-size: 3em; color:yellow');
console.log('%c接口地址:' + service.defaults.baseURL, 'background-color: black; font-size: 1.5em; color:yellow !important');
}
// request拦截器 // request拦截器
service.interceptors.request.use(config => { service.interceptors.request.use(config => {
config.headers['locale'] = getLocale() config.headers['locale'] = getLocale()
......
...@@ -466,6 +466,12 @@ export default { ...@@ -466,6 +466,12 @@ export default {
id: this.processInstance.businessKey, id: this.processInstance.businessKey,
path: this.processInstance.processDefinition?.formCustomViewPath path: this.processInstance.processDefinition?.formCustomViewPath
}, },
// 线路重量超限
line_weight_exception:{
component: () => import('@/views/ecw/order/exception/components/overweightException'),
id: this.processInstance.businessKey,
path: this.processInstance.processDefinition?.formCustomViewPath
},
} }
console.log('formCustomViewPath', this.processInstance.processDefinition.formCustomViewPath.trim()) console.log('formCustomViewPath', this.processInstance.processDefinition.formCustomViewPath.trim())
return map[this.processInstance.processDefinition.formCustomViewPath.trim()] return map[this.processInstance.processDefinition.formCustomViewPath.trim()]
......
...@@ -7,21 +7,26 @@ ...@@ -7,21 +7,26 @@
<el-radio v-for="dict in transportTypes" :key="dict.value" :label="dict.value">{{$l(dict, 'label')}}</el-radio> <el-radio v-for="dict in transportTypes" :key="dict.value" :label="dict.value">{{$l(dict, 'label')}}</el-radio>
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
<el-form-item :label="$t('目的国')" prop="destCountryId">
<el-select v-model="form.destCountryId" clearable>
<el-option v-for="item in tradeCountryList" :key="item.id" :label="$l(item, 'title')" :value="item.id"></el-option>
</el-select>
</el-form-item>
<el-form-item :label="$t('出货渠道')" prop="shippingChannelId"> <el-form-item :label="$t('出货渠道')" prop="shippingChannelId">
<el-select v-model="form.shippingChannelId" :placeholder="$t('请选择出货渠道')"> <el-select v-model="form.shippingChannelId" :placeholder="$t('请选择出货渠道')" clearable>
<el-option v-for="item in channelList" :label="$l(item, 'name')" :value="item.channelId" :key="item.channelId"></el-option> <el-option v-for="item in filteredChannelList" :label="$l(item, 'name')" :value="item.channelId" :key="item.channelId"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item :label="$t('始发地')" prop="startWarehouseId"> <el-form-item :label="$t('始发地')" prop="startWarehouseId">
<el-select v-model="form.startWarehouseId" :placeholder="$t('请选择始发地')"> <el-select v-model="form.startWarehouseId" :placeholder="$t('请选择始发地')" clearable>
<el-option v-for="item in exportWarehouseList" :label="$l(item, 'title')" :value="item.id" :key="item.id"></el-option> <el-option v-for="item in exportWarehouseList" :label="$l(item, 'title')" :value="item.id" :key="item.id"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item :label="$t('目的地')" prop="destWarehouseId"> <el-form-item :label="$t('目的地')" prop="destWarehouseId">
<el-select v-model="form.destWarehouseId" :placeholder="$t('请选择目的地')"> <el-select v-model="form.destWarehouseId" :placeholder="$t('请选择目的地')" clearable>
<el-option v-for="item in importWarehouseList" :label="$l(item, 'title')" :value="item.id" :key="item.id"></el-option> <el-option v-for="item in importWarehouseList" :label="$l(item, 'title')" :value="item.id" :key="item.id"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
...@@ -73,6 +78,7 @@ ...@@ -73,6 +78,7 @@
<script> <script>
import { createbox, updatebox } from "@/api/ecw/boxAir"; import { createbox, updatebox } from "@/api/ecw/boxAir";
import { getChannelList } from '@/api/ecw/channel' import { getChannelList } from '@/api/ecw/channel'
import { getTradeCountryList } from '@/api/ecw/region'
export default { export default {
name: "editAirForm", name: "editAirForm",
...@@ -91,11 +97,14 @@ export default { ...@@ -91,11 +97,14 @@ export default {
this.form.destinationClearanceSelect = 3 this.form.destinationClearanceSelect = 3
} }
this.getChannelList() this.getChannelList()
this.getTradeCountry()
}, },
data() { data() {
return { return {
// 表单参数 // 表单参数
form: { }, form: {
destCountryId: undefined
},
channelList: [], channelList: [],
// 表单校验 // 表单校验
rules: { rules: {
...@@ -108,19 +117,38 @@ export default { ...@@ -108,19 +117,38 @@ export default {
destWarehouseId: [ destWarehouseId: [
{ required: true, message: this.$t('目的地不能为空'), trigger: 'blur' } { required: true, message: this.$t('目的地不能为空'), trigger: 'blur' }
] ]
} },
tradeCountryList:[]
}; };
}, },
watch:{ watch:{
'form.destinationClearanceSelect'(){ 'form.destinationClearanceSelect'(){
if(!this.form.destinationClearance){ if(!this.form.destinationClearance){
this.$set(this.form, 'destinationClearance', 1) this.$set(this.form, 'destinationClearance', 1)
} }
},
'form.destCountryId'(){
this.getChannelList()
},
'form.shippingChannelId'(){
let channel = this.channelList.find(item => item.channelId == this.form.shippingChannelId)
if(channel){
this.$set(this.form, 'destCountryId', channel.countryId)
} }
}, },
'form.destWarehouseId'(){
let city = this.importWarehouseList.find(item => item.id == this.form.destWarehouseId)
if(city){
this.form.destCountryId = city.guojia
}
}
},
methods: { methods: {
async getTradeCountry(){
this.tradeCountryList = (await getTradeCountryList()).data
},
getChannelList() { getChannelList() {
getChannelList().then((res) => (this.channelList = res.data)) getChannelList({}).then((res) => (this.channelList = res.data))
}, },
/*destinationClearanceSelect(val) { /*destinationClearanceSelect(val) {
this.$set(this.form,'destinationClearance',val) this.$set(this.form,'destinationClearance',val)
...@@ -160,9 +188,22 @@ export default { ...@@ -160,9 +188,22 @@ export default {
}, },
importWarehouseList() { importWarehouseList() {
return this.warehouseList.filter( return this.warehouseList.filter(
(item) => item.tradeType == "1" || item.type == "3" (item) => {
if(this.form.destCountryId && item.guojia != this.form.destCountryId){
return false
}
return item.tradeType == "1" || item.type == "3"
}
); );
}, },
filteredChannelList(){
return this.channelList.filter(item => {
if(this.form.destCountryId && this.form.destCountryId != item.countryId){
return false
}
return true
})
}
}, },
}; };
</script> </script>
......
...@@ -74,7 +74,7 @@ ...@@ -74,7 +74,7 @@
</el-row> </el-row>
<!-- 列表 --> <!-- 列表 -->
<el-table v-loading="loading" :data="list"> <el-table size="mini" v-loading="loading" :data="list">
<el-table-column :label="$t('自编号')" align="center" prop="selfNo"> <el-table-column :label="$t('自编号')" align="center" prop="selfNo">
<template slot-scope="scope"> <template slot-scope="scope">
<a href="javascript:void(0)" @click="handleCommand(scope.row, 'detail')">{{ scope.row.selfNo }}</a> <a href="javascript:void(0)" @click="handleCommand(scope.row, 'detail')">{{ scope.row.selfNo }}</a>
...@@ -92,16 +92,26 @@ ...@@ -92,16 +92,26 @@
</template> </template>
</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="{row}"> <template slot-scope="{row}">
{{row.boxStatistics.volume}}/{{row.boxStatistics.loadVolume}} {{row.boxStatistics.volume}}/{{row.boxStatistics.loadVolume}}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('重量(分拣/已装)')" align="center" prop="weight"> <el-table-column :label="$t('订单重量(分拣/已装)')" align="center" prop="weight">
<template slot-scope="{row}"> <template slot-scope="{row}">
{{row.boxStatistics.weight}}/{{row.boxStatistics.loadWeight}} {{row.boxStatistics.weight}}/{{row.boxStatistics.loadWeight}}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('合包方数(分拣/已装)')" align="center" prop="weight">
<template slot-scope="{row}">
{{row.boxStatistics.volume }}/{{row.boxStatistics.mergeVolume}}
</template>
</el-table-column>
<el-table-column :label="$t('合包重量(分拣/已装)')" align="center" prop="weight">
<template slot-scope="{row}">
{{row.boxStatistics.weight}}/{{row.boxStatistics.mergeWeight}}
</template>
</el-table-column>
<el-table-column :label="$t('状态')" align="center" prop="shipmentStatusText" /> <el-table-column :label="$t('状态')" align="center" prop="shipmentStatusText" />
...@@ -125,8 +135,8 @@ ...@@ -125,8 +135,8 @@
<el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)" <el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)"
v-hasPermi="['shipment:box:delete']">{{$t('删除')}}</el-button> --> v-hasPermi="['shipment:box:delete']">{{$t('删除')}}</el-button> -->
<el-dropdown trigger="click" @command="(command) => handleCommand(scope.row, command)" style="marginRight:10px;"> <el-dropdown trigger="click" @command="(command) => handleCommand(scope.row, command)" style="marginRight:10px;">
<el-button type="primary"> {{ $t('操作') }}<i class="el-icon-arrow-down el-icon--right"></i> </el-button> <el-button type="text"> {{ $t('操作') }}<i class="el-icon-arrow-down el-icon--right"></i> </el-button>
<el-dropdown-menu slot="dropdown"> <el-dropdown-menu slot="dropdown">
<el-dropdown-item command="edit" v-has-permi="['shipment:air:edit']" :disabled="scope.row.prStatus>21">{{$t('编辑')}}</el-dropdown-item> <el-dropdown-item command="edit" v-has-permi="['shipment:air:edit']" :disabled="scope.row.prStatus>21">{{$t('编辑')}}</el-dropdown-item>
<el-dropdown-item command="air" v-has-permi="['shipment:air:action']">{{$t('操作')}}-{{$t('空运')}}</el-dropdown-item> <el-dropdown-item command="air" v-has-permi="['shipment:air:action']">{{$t('操作')}}-{{$t('空运')}}</el-dropdown-item>
<el-dropdown-item command="error" v-has-permi="['shipment:air:exception']">{{$t('异常登记')}}</el-dropdown-item> <el-dropdown-item command="error" v-has-permi="['shipment:air:exception']">{{$t('异常登记')}}</el-dropdown-item>
...@@ -141,7 +151,7 @@ ...@@ -141,7 +151,7 @@
'shipment:air:download:downloadLoadGoodsList','shipment:air:download:downloadReceivableList', 'shipment:air:download:downloadLoadGoodsList','shipment:air:download:downloadReceivableList',
'shipment:air:download:downloadAgentListFiles','shipment:air:download:downloadSoncapFiles', 'shipment:air:download:downloadAgentListFiles','shipment:air:download:downloadSoncapFiles',
'shipment:air:download:zipDownload','shipment:air:download:downloadLadingCopy']"> 'shipment:air:download:zipDownload','shipment:air:download:downloadLadingCopy']">
<el-button type="primary"> <el-button type="text">
{{$t('下载')}}<i class="el-icon-arrow-down el-icon--right"></i> {{$t('下载')}}<i class="el-icon-arrow-down el-icon--right"></i>
</el-button> </el-button>
<el-dropdown-menu slot="dropdown"> <el-dropdown-menu slot="dropdown">
......
...@@ -65,11 +65,11 @@ ...@@ -65,11 +65,11 @@
</el-form-item> </el-form-item>
<el-form-item :label="$t('出仓箱数')" prop="realNum"> <el-form-item :label="$t('出仓箱数')" prop="realNum">
<el-input-number v-model="airCheckoutObj.realNum" :controls="false" :precision="0" /> <el-input-number v-model="airCheckoutObj.realNum" :controls="false" :precision="0" disabled />
</el-form-item> </el-form-item>
<el-form-item :label="$t('出仓影像')"> <el-form-item :label="$t('出仓影像')">
<ImageUpload :limit="1" :isShowTip=false v-model="airCheckoutObj.checkoutFiles" /> <ImageUpload :limit="1" :isShowTip=false v-model="airCheckoutObj.checkoutFiles" @input="saveImage" />
</el-form-item> </el-form-item>
<el-form-item :label="$t('备注')"> <el-form-item :label="$t('备注')">
...@@ -79,16 +79,24 @@ ...@@ -79,16 +79,24 @@
</el-form> </el-form>
<!-- 开始出仓 -->
<el-dialog :title="$t('开始出仓')" :visible.sync="dialogVisible" fullscreen :modal-append-to-body=false append-to-body>
<startCheckout v-bind="$attrs" v-if="dialogVisible" v-on="$listeners" @closeDialog1="closeDialog1" @reload="reload" />
</el-dialog>
<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 :disabled="$attrs.shipmentObj.approvaling" type="success" @click="onSubmit(2)">{{$t('提交')}}</el-button> <el-button :disabled="$attrs.shipmentObj.approvaling" 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="danger" @click="startCheckout">{{$t('确认出仓')}}</el-button>
</el-row> </el-row>
</div> </div>
</template> </template>
<script> <script>
import { getbox } from "@/api/ecw/box";
import { airCheckoutCreate } from "@/api/ecw/boxSea"; import { airCheckoutCreate } from "@/api/ecw/boxSea";
import startCheckout from "./checkout/startCheckout.vue";
import userSelect from "./common/userSelect.vue"; import userSelect from "./common/userSelect.vue";
import ImageUpload from "@/components/ImageUpload"; import ImageUpload from "@/components/ImageUpload";
import { constantDict, formatDateStr, formatNumberString, serviceMsg } from "../utils"; import { constantDict, formatDateStr, formatNumberString, serviceMsg } from "../utils";
...@@ -99,7 +107,7 @@ import { constantDict, formatDateStr, formatNumberString, serviceMsg } from "../ ...@@ -99,7 +107,7 @@ import { constantDict, formatDateStr, formatNumberString, serviceMsg } from "../
export default { export default {
name: "checkout", name: "checkout",
inheritAttrs: false, inheritAttrs: false,
components: { userSelect, ImageUpload }, components: { userSelect, ImageUpload, startCheckout },
data() { data() {
return { return {
// 空运出仓对象 // 空运出仓对象
...@@ -114,6 +122,7 @@ export default { ...@@ -114,6 +122,7 @@ export default {
//deliverType: [{ required: true, message: this.$t("必填"), trigger: "change" }], //deliverType: [{ required: true, message: this.$t("必填"), trigger: "change" }],
checkoutTime: [{ required: true, message: this.$t("必填"), trigger: "change" }] checkoutTime: [{ required: true, message: this.$t("必填"), trigger: "change" }]
}, },
dialogVisible: false
}; };
}, },
created() { created() {
...@@ -150,10 +159,44 @@ export default { ...@@ -150,10 +159,44 @@ export default {
} }
}); });
}, },
reload() {
getbox(this.$attrs.shipmentObj.id).then((res)=>{
this.$set(this.airCheckoutObj, 'planNum', res.data.planNum)
this.$set(this.airCheckoutObj, 'realNum', res.data.realNum)
})
},
/** 取消 */ /** 取消 */
cancel(type) { cancel(type) {
this.$emit("closeDialog", type); this.$emit("closeDialog", type);
}, },
/** 开始出仓 */
startCheckout() {
this.dialogVisible = true;
},
closeDialog1() {
this.dialogVisible = false;
},
//自动保存图片
saveImage() {
const { ldPictures } = this.airCheckoutObj;
let pictures = ldPictures?.split(",") ?? [];
let newPictures = [];
for (const item of pictures) {
if (item) {
newPictures.push({
type: "image",
url: item,
});
}
}
airCheckoutCreate({
...this.airCheckoutObj,
shipmentId: this.$attrs.shipmentObj.id,
operateType: 1,
}).then(()=>{
this.$emit("getBoxInfo");
})
}
}, },
}; };
</script> </script>
......
...@@ -34,6 +34,13 @@ ...@@ -34,6 +34,13 @@
>{{ $t('新建合包箱号') }}</el-button >{{ $t('新建合包箱号') }}</el-button
> >
<el-button class="ml-10" @click="pack">{{$t('补单')}}</el-button> <el-button class="ml-10" @click="pack">{{$t('补单')}}</el-button>
<span style="margin:0 20px">{{$t('状态')}}</span>
<el-select v-model="pkgStatus" :placeholder="$t('状态')" @change="changeStatus" >
<el-option :label="$t('全部')" value="0"></el-option>
<el-option :label="$t('未装箱')" value="1"></el-option>
<el-option :label="$t('装箱中')" value="2"></el-option>
<el-option :label="$t('已装箱')" value="3"></el-option>
</el-select>
</el-row> </el-row>
<el-row style="margin-top: 5px"> <el-row style="margin-top: 5px">
<el-table border :data="pagList" max-height="600px"> <el-table border :data="pagList" max-height="600px">
...@@ -203,7 +210,8 @@ export default { ...@@ -203,7 +210,8 @@ export default {
showPackDialog: false, showPackDialog: false,
showPagedialogVisible: false, showPagedialogVisible: false,
showPageTitle: '', showPageTitle: '',
showPkgData: {} showPkgData: {},
pkgStatus:"0" //装箱状态
} }
}, },
created() { created() {
...@@ -221,6 +229,11 @@ export default { ...@@ -221,6 +229,11 @@ export default {
methods: { methods: {
formatDate, formatDate,
getList() { getList() {
if(this.pkgStatus>0){
this.queryParams.status = this.pkgStatus
}else{
delete this.queryParams.status
}
getMergePkgList(this.queryParams).then((res) => { getMergePkgList(this.queryParams).then((res) => {
this.pagList = res.data.list this.pagList = res.data.list
this.total = res.data.total this.total = res.data.total
...@@ -306,6 +319,9 @@ export default { ...@@ -306,6 +319,9 @@ export default {
// 提交补单 // 提交补单
onSupplementFinish(){ onSupplementFinish(){
this.showPackDialog = false this.showPackDialog = false
},
changeStatus(){
this.getList()
} }
} }
} }
......
...@@ -40,6 +40,7 @@ ...@@ -40,6 +40,7 @@
<el-col :span="18" class="right-area"> <el-col :span="18" class="right-area">
<el-row class="right-title"> <el-row class="right-title">
<div>{{$t('自编号')}}:{{selfNo}}</div>
<div>{{$t('货物筛选')}}</div> <div>{{$t('货物筛选')}}</div>
<div>{{$t('出货渠道')}}:{{channelName}}</div> <div>{{$t('出货渠道')}}:{{channelName}}</div>
<div>{{$t('可出特性')}}:{{attrName}}</div> <div>{{$t('可出特性')}}:{{attrName}}</div>
...@@ -193,6 +194,7 @@ export default { ...@@ -193,6 +194,7 @@ export default {
// 选中部分 // 选中部分
partData: {}, partData: {},
// 部分列表 // 部分列表
selfNo: this.$attrs.shipmentObj.selfNo,
partList: [], partList: [],
// 部分统计 // 部分统计
loadStatistics: {}, loadStatistics: {},
...@@ -597,6 +599,12 @@ export default { ...@@ -597,6 +599,12 @@ export default {
> div:first-child + div { > div:first-child + div {
margin-left: 20px; margin-left: 20px;
} }
> div:first-child + div + div {
margin-left: 20px;
}
> div:first-child + div + div + div {
margin-left: 20px;
}
> div:last-child { > div:last-child {
flex: 1; flex: 1;
text-align: right; text-align: right;
......
...@@ -83,10 +83,16 @@ export default { ...@@ -83,10 +83,16 @@ export default {
}); });
} }
}); });
if (orderLocationList.length === 0) { if (orderLocationList.length === 0) {
this.$message.error(this.$t("没有需要修改储位的订单")); let orderIds = []
return; this.storageList.forEach(item=>{
if(!orderIds.includes(item.orderId)){
orderIds.push(item.orderId)
}
})
orderIds.forEach(id=>{
orderLocationList.push({orderId: id})
})
} }
tallyLocationUpdate({ tallyLocationUpdate({
......
...@@ -37,7 +37,7 @@ ...@@ -37,7 +37,7 @@
<span class="mr-10">-</span> <span class="mr-10">-</span>
<el-input v-model="item.endNum" class="mr-10"></el-input > <el-input v-model="item.endNum" class="mr-10"></el-input >
<span class="mr-10">/</span> <span class="mr-10">/</span>
<weight-select @change="changeWeight" :disabled="index > 0" v-model="item.weightUnit" :options="unitList"></weight-select> <weight-select @change="setAirFreightWeight" :disabled="index > 0" v-model="item.clearanceVolumeUnit" :options="unitList"></weight-select>
</div> </div>
</el-col> </el-col>
</el-row> </el-row>
...@@ -75,7 +75,7 @@ export default { ...@@ -75,7 +75,7 @@ export default {
type:String, type:String,
default:'channelPriceStepClearanceList' default:'channelPriceStepClearanceList'
}, },
readonly: Boolean readonly: Boolean,
}, },
name: "packaging-type", name: "packaging-type",
components: {Template, WeightSelect, CurrencySelect}, components: {Template, WeightSelect, CurrencySelect},
...@@ -96,14 +96,7 @@ export default { ...@@ -96,14 +96,7 @@ export default {
}, },
computed:{ computed:{
screenCom(){ screenCom(){
let num = undefined return this.getDictDatas(this.DICT_TYPE.CUSTOM_CLEARANCE)[0]?.value
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() {
...@@ -120,11 +113,6 @@ export default { ...@@ -120,11 +113,6 @@ export default {
}) })
}, },
methods:{ methods:{
changeWeight(e){
this.value1[this.keyArr].forEach(item => {
item.weightUnit = e
})
},
setCurrency(e){ setCurrency(e){
this.value1[this.keyArr].forEach(item => { this.value1[this.keyArr].forEach(item => {
item.clearancePriceUnit = e item.clearancePriceUnit = e
...@@ -137,14 +125,11 @@ export default { ...@@ -137,14 +125,11 @@ export default {
}, },
addInterval(){ addInterval(){
let p = { let p = {
"channelId":'',
"clearancePrice":'', "clearancePrice":'',
"clearancePriceUnit": this.value1[this.keyArr].length && this.value1[this.keyArr][0].clearancePriceUnit ? this.value1[this.keyArr][0].clearancePriceUnit : '', "clearancePriceUnit": this.value1[this.keyArr].length && this.value1[this.keyArr][0].clearancePriceUnit ? this.value1[this.keyArr][0].clearancePriceUnit : '',
"clearanceVolumeUnit":this.value1[this.keyArr].length ? this.value1[this.keyArr][0].clearanceVolumeUnit : 6, "clearanceVolumeUnit":this.value1[this.keyArr].length ? this.value1[this.keyArr][0].clearanceVolumeUnit : 6,
"endNum":'', "endNum":'',
"packagingId":'',
"startNum":'', "startNum":'',
"weightUnit": this.value1[this.keyArr].length ? this.value1[this.keyArr][0].weightUnit : 6
} }
this.value1[this.keyArr].push(p) this.value1[this.keyArr].push(p)
this.$forceUpdate(); this.$forceUpdate();
...@@ -152,10 +137,11 @@ export default { ...@@ -152,10 +137,11 @@ export default {
deleteFn(index){ deleteFn(index){
this.value1[this.keyArr].splice(index, 1) this.value1[this.keyArr].splice(index, 1)
this.$forceUpdate(); this.$forceUpdate();
} }
}, },
watch:{ watch:{
'value1.priceStepClearanceList':{ 'value1.priceStepClearanceCreateReqVOList':{
handler(val){ handler(val){
if(val && val.length === 0){ if(val && val.length === 0){
this.addInterval(); this.addInterval();
......
This diff is collapsed.
This diff is collapsed.
...@@ -58,6 +58,12 @@ ...@@ -58,6 +58,12 @@
<el-option v-for="item in importWarehouseList" :label="$l(item, 'title')" :value="item.id" :key="item.id"></el-option> <el-option v-for="item in importWarehouseList" :label="$l(item, 'title')" :value="item.id" :key="item.id"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="业绩类型">
<el-select clearable v-model="queryParams.achieveType">
<el-option :value="1" label="新客户"></el-option>
<el-option :value="0" label="旧客户"></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 @click="resetQuery">{{$t('重置')}}</el-button> <el-button @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>
......
...@@ -235,7 +235,7 @@ ...@@ -235,7 +235,7 @@
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: {
......
This diff is collapsed.
<template>
<div class="app-container">
<!-- 搜索工作栏 -->
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" label-width="68px">
<el-form-item :label="$t('运输方式')" prop="transportType">
<dict-selector :type="DICT_TYPE.ECW_TRANSPORT_TYPE" v-model="queryParams.transportType" formatter="number"
clearable/>
</el-form-item>
<el-form-item>
<el-form-item :label="$t('始发仓')" prop="startWarehouseId">
<el-select multiple v-model="queryParams.startWarehouseIdList" :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="destWarehouseIdArr">
<el-select multiple v-model="queryParams.destWarehouseIdList" 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-form-item :label="$t('出货渠道')" prop="shippingChannel">
<el-select v-model="queryParams.channelId" :placeholder="$t('请选择出货渠道')" clearable>
<el-option v-for="item in channelList" :label="item.nameZh" :value="item.channelId"
:key="item.channelId"></el-option>
</el-select>
</el-form-item>
<el-form-item label-width="200" label="目的仓国家">
<el-select style="width: 100%" filterable clearable v-model="queryParams.destCountryId" :placeholder="$t('请选择国家')">
<el-option v-for="dict in countryList"
:key="dict.id" :label="$l(dict,'title')" :value="parseInt(dict.id)"/>
</el-select>
</el-form-item>
<el-button type="primary" icon="el-icon-search" @click="handleQuery">{{ $t('搜索') }}</el-button>
</el-form-item>
</el-form>
<!-- 列表 -->
<el-table v-loading="loading" :data="list">
<el-table-column :label="$t('序号')" align="center" type="index"/>
<el-table-column :label="$t('始发仓')" align="center">
<template slot-scope="{row}">
{{ $l(row, 'startWarehouseTitle') }}
</template>
</el-table-column>
<el-table-column :label="$t('目的仓')" align="center">
<template slot-scope="{row}">
{{ $l(row, 'destWarehouseTitle') }}
</template>
</el-table-column>
<el-table-column :label="$t('运输方式')" align="center">
<template slot-scope="{row}">
<dict-tag :type="DICT_TYPE.ECW_TRANSPORT_TYPE" :value="row.transportType"></dict-tag>
</template>
</el-table-column>
<el-table-column :label="$t('目的仓国家')" align="center">
<template slot-scope="{row}">
{{$l(row, 'destCountryName')}}
</template>
</el-table-column>
<el-table-column :label="$t('出货渠道')" align="center">
<template slot-scope="{row}">
{{ row.channelIds ? $l(row, 'channelNames') : '/' }}
</template>
</el-table-column>
<el-table-column :label="$t('操作')" align="center">
<template slot-scope="{row}">
<el-button v-if="row.transportType === 3" type="text" @click="$router.push({
path:'/offer/channel-route?id='+ row.id,
query:{
startWarehouseTitle:$l(row,'startWarehouseTitle'),
destWarehouseTitle: $l(row, 'destWarehouseTitle'),
destCountryName:$l(row,'destCountryName')
}
})">空运渠道包装清关费
</el-button>
</template>
</el-table-column>
</el-table>
<!-- 分页组件 -->
<pagination v-show="total > 0" :total="total" :page.sync="queryParams.page" :limit.sync="queryParams.rows"
@pagination="getList"/>
</div>
</template>
<script>
import {
createDeptTarget,
updateDeptTarget,
deleteDeptTarget,
getDeptTarget,
getDeptTargetPage,
exportDeptTargetExcel,
getCreateInitData,
getPersonTargetPage,
myAchievementByPage
} from "@/api/ecw/deptTarget";
import {listSimpleDepts} from "@/api/system/dept";
import {getChannelList} from '@/api/ecw/channel';
import dayjs from "dayjs";
import {listServiceUser} from "@/api/system/user";
import {getWarehouseList} from '@/api/ecw/warehouse'
import {DICT_TYPE} from "@/utils/dict";
import {warehouseLinePage} from "@/api/ecw/customerContacts";
import {getTradeCountryList} from "@/api/ecw/region";
export default {
name: "EcwOfferAll-routes-list",
components: {},
data() {
return {
countryList:[],
// 遮罩层
loading: true,
// 总条数
total: 0,
list: [],
// 是否显示弹出层
open: false,
tableOpen: false,
channelList: [],
// 查询参数
queryParams: {
page: 1,
rows: 10,
},
// 表单校验
myAchievementData: {},
warehouseList: []
};
},
computed: {
DICT_TYPE() {
return DICT_TYPE
},
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();
this.getList();
},
created() {
getTradeCountryList().then(r => {
this.countryList = r.data
})
this.getChannelList();
this.getList();
listServiceUser().then(r => {
this.customerServiceList = r.data;
})
getWarehouseList().then(res => {
this.warehouseList = res.data
})
},
methods: {
getChannelList() {
getChannelList().then(res => this.channelList = res.data)
},
customerServiceFn(val) {
if (this.customerServiceList.length > 0) {
let index = this.customerServiceList.findIndex(item => item.id === val.userId);
return index !== -1 ? this.customerServiceList[index]?.nickname : ''
} else {
return ''
}
},
/** 查询列表 */
getList() {
this.loading = true;
const params = {...this.queryParams}
// 执行查询
warehouseLinePage(params).then(r => {
this.loading = false;
this.list = r.data.list;
this.total = r.data.total
})
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.page = 1;
this.getList();
},
}
};
</script>
<style scoped>
.total_num {
display: flex;
align-items: center;
justify-content: center;
margin: 20px 0;
font-size: 15px;
}
.total_num span {
margin: 0 8px;
}
</style>
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
...@@ -274,6 +274,8 @@ ...@@ -274,6 +274,8 @@
<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>
<!-- 2.0.2 -->
<el-button v-else-if="scope.row.orderExceptionType=='line_weight_exception'" v-hasPermi="['ecw:exception:lineWeightException']" 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>
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
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