Commit 5a76222e authored by houjn@hikoon.cn's avatar houjn@hikoon.cn
parents df2e7b44 d0061874
...@@ -63,6 +63,15 @@ export function exportPreloadGoodsList(query) { ...@@ -63,6 +63,15 @@ export function exportPreloadGoodsList(query) {
}); });
} }
// 导出海运预装单,上面的预装单是空运的
export function exportSeaPreloadGoodsList(query) {
return request({
url: "/ecw/box-preload-goods/downloadSeaPreloadGoodsList",
method: "get",
params: query
});
}
// 创建费用登记 // 创建费用登记
export function createCost(data) { export function createCost(data) {
if (data.id) { if (data.id) {
...@@ -401,3 +410,11 @@ export function exportSettlementExcel(params) { ...@@ -401,3 +410,11 @@ export function exportSettlementExcel(params) {
params, params,
}); });
} }
// 刷新空运提单
export function updateAirBill(id) {
return request({
url: "/shipment/make-bill-of-lading/updateAirBill?ids=" + id,
method: "get"
});
}
...@@ -317,6 +317,21 @@ export function updateOrderArrival(data) { ...@@ -317,6 +317,21 @@ export function updateOrderArrival(data) {
}); });
} }
/**
* 创建到港订单
*
* @export
* @param {*} data
* @return {*}
*/
export function createOrderArrival(data) {
return request({
url: `/ecw/box-arrival-air/create`,
method: "post",
data: data
});
}
/** /**
* 更新所有订单到港状态 * 更新所有订单到港状态
* *
......
...@@ -112,9 +112,9 @@ export function createSplitItem(data) { ...@@ -112,9 +112,9 @@ export function createSplitItem(data) {
} }
// 删除订单拆单项 // 删除订单拆单项
export function deleteSplitItem(id) { export function deleteSplitItem(id, shipmentSplit = false) {
return request({ return request({
url: '/order/split-item/delete?id=' + id, url: '/order/split-item/delete?id=' + id + '&shipmentSplit=' + shipmentSplit,
method: 'delete' method: 'delete'
}) })
} }
......
...@@ -59,6 +59,15 @@ export function getProductList(params) { ...@@ -59,6 +59,15 @@ export function getProductList(params) {
}) })
} }
// 返回简洁的商品列表
export function getSimpleProductList(params) {
return request({
url: '/ecw/product/simpleList',
method: 'get',
params
})
}
// 获得产品分页 // 获得产品分页
export function getProductPage(query) { export function getProductPage(query) {
return request({ return request({
......
...@@ -12,39 +12,39 @@ ...@@ -12,39 +12,39 @@
<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 v-if="showAll"> <div>
<el-checkbox :label="$t('全选') + `(${total > 500 ? $t('最多500') : $t('{total}个', {total})})`" @change="toggleAll" :disabled="isAllProduct || loading"></el-checkbox> <el-checkbox :label="$t('全选') + `(${$t('{total}个', {total})})`" @change="toggleAll" :disabled="isAllProduct || loading"></el-checkbox>
<el-checkbox :label="$t('全选库内商品(共{cnt}个)', {cnt: allTotal})" v-model="isAllProduct" :disabled="loading"></el-checkbox>
<el-checkbox v-if="showFiltered && enableFiltered" :label="$t('根据商品搜索结果(共{cnt}个)', {cnt: total})" v-model="isAllFiltered" :disabled="loading"></el-checkbox>
</div> </div>
</div> </div>
<div class="list"> <div class="list">
<div class="item" v-for="item in list" :key="item.id"> <div class="item" v-for="item in currentList" :key="item.id">
<el-checkbox @change="toggleCheck(item, $event)" :value="ids.indexOf(item.id) > -1" :disabled="isAllProduct" /> {{item.titleZh}} <el-checkbox @change="toggleCheck(item, $event)" :value="ids.indexOf(item.id) > -1" :disabled="isAllProduct" /> {{item.titleZh}}
<div>{{item.titleEn}}</div> <div>{{item.titleEn}}</div>
</div> </div>
</div> </div>
<el-pagination :total="list.length" :page-sizes="[100, 200, 300, 500]" :page-size="pageSize" @current-change="leftPage = $event" layout="prev, pager, next, total, sizes" :current-page="leftPage" />
</el-card> </el-card>
</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 flex">
<div class="flex-1 flex items-center">{{$t('已选{cnt}个产品', {cnt: isAllProduct || isAllFiltered ? total : choosedList.length})}}</div> <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> <el-button :disabled="!choosedList.length" type="text" @click="clearAll">{{$t('全部清除')}}</el-button>
</div> </div>
<div class="list"> <div class="list">
<div class="item" v-for="(choosed) in choosedList" :key="choosed.id" :data-data="JSON.stringify(choosed)"> <div class="item" v-for="(choosed) in selectedList" :key="choosed.id" :data-data="JSON.stringify(choosed)">
<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-card> </el-card>
</div> </div>
</div> </div>
</template> </template>
<script> <script>
import {getProductPage, getProductList, getProductIds} from '@/api/ecw/product' import {getProductPage, getProductList, getProductIds, getSimpleProductList} from '@/api/ecw/product'
import { getProductTypeList } from '@/api/ecw/productType' import { getProductTypeList } from '@/api/ecw/productType'
import { getProductAttrList } from '@/api/ecw/productAttr' import { getProductAttrList } from '@/api/ecw/productAttr'
...@@ -67,11 +67,10 @@ export default { ...@@ -67,11 +67,10 @@ export default {
list: [], list: [],
page: 1, page: 1,
pages: 1, pages: 1,
total: 0, // 当前筛选条件的商品总数
allTotal: 0, // 全库商品总数 allTotal: 0, // 全库商品总数
queryParams: { queryParams: {
pageNo: 1, pageNo: 1,
pageSize: 500, pageSize: 10000,
attrId: null, attrId: null,
titleZh: null, titleZh: null,
typeId: null typeId: null
...@@ -80,12 +79,21 @@ export default { ...@@ -80,12 +79,21 @@ export default {
typeList: [], typeList: [],
attrList: [], attrList: [],
isAllProduct: false, isAllProduct: false,
isAllFiltered: false, // 是否全部搜索结果 //isAllFiltered: false, // 是否全部搜索结果
// 是否显示搜索结果勾选,有筛选条件才显示 // 是否显示搜索结果勾选,有筛选条件才显示
showFiltered: false showFiltered: false,
// 左侧页码
leftPage: 1,
// 右侧页码
rightPage: 1,
// 页大小
pageSize: 100
} }
}, },
computed: { computed: {
total(){
return this.list.length
},
ids: { ids: {
get() { get() {
let arr = [] let arr = []
...@@ -97,6 +105,14 @@ export default { ...@@ -97,6 +105,14 @@ export default {
set(v) { set(v) {
} }
},
// 左侧当前显示的列表
currentList(){
return this.list.slice((this.leftPage - 1) * this.pageSize, this.leftPage * this.pageSize)
},
// 已勾选的显示列表
selectedList(){
return this.choosedList.slice((this.rightPage - 1) * this.pageSize, this.rightPage * this.pageSize)
} }
}, },
watch: { watch: {
...@@ -108,11 +124,11 @@ export default { ...@@ -108,11 +124,11 @@ export default {
this.choosedList = [] this.choosedList = []
this.$emit('setall', isAllProduct) this.$emit('setall', isAllProduct)
}, },
isAllFiltered(isAllFiltered){ /*isAllFiltered(isAllFiltered){
this.choosedList = [] this.choosedList = []
this.isAllProduct = false this.isAllProduct = false
this.$emit('setFiltered', isAllFiltered) this.$emit('setFiltered', isAllFiltered)
}, },*/
defaultIds(newValue, oldValue){ defaultIds(newValue, oldValue){
if(!oldValue || !oldValue.length){ if(!oldValue || !oldValue.length){
this.loadDefaultProds() this.loadDefaultProds()
...@@ -122,27 +138,28 @@ export default { ...@@ -122,27 +138,28 @@ export default {
this.isAllProduct = isall this.isAllProduct = isall
} }
}, },
created() { async created() {
getProductTypeList().then(res => this.typeList = res.data) getProductTypeList().then(res => this.typeList = res.data)
getProductAttrList().then(res => this.attrList = res.data) getProductAttrList().then(res => this.attrList = res.data)
this.reLoad() await this.reLoad()
this.ids = this.defaultIds //数据回显 this.ids = this.defaultIds //数据回显
this.isAllProduct = this.isall this.isAllProduct = this.isall
// 如果有默认商品则获取内容供回显 // 如果有默认商品则获取内容供回显
if(this.defaultIds.length){ if(this.defaultIds.length){
this.loadDefaultProds() this.setDefaultChooseProds()
//this.loadDefaultProds()
} }
// 获取全库商品总数 // 获取全库商品总数
getProductPage({pageNo: 1, pageSize: 1}).then(res => { /*getProductPage({pageNo: 1, pageSize: 1}).then(res => {
this.allTotal = res.data.total this.allTotal = res.data.total
}) })*/
}, },
methods: { methods: {
/* setAllProduct(status){ /* setAllProduct(status){
this.isAllProduct = true this.isAllProduct = true
}, */ }, */
loadDefaultProds(){ /*loadDefaultProds(){
if(!this.defaultIds || !this.defaultIds.length){ if(!this.defaultIds || !this.defaultIds.length){
return false return false
} }
...@@ -151,16 +168,24 @@ export default { ...@@ -151,16 +168,24 @@ export default {
this.choose(item) this.choose(item)
}) })
}) })
},*/
// 设置默认选中的商品
setDefaultChooseProds(){
this.list.forEach(item => {
if(this.defaultIds.indexOf(item.id) > -1){
this.choose(item)
}
})
}, },
toggleAll(status){ toggleAll(status){
this.list.forEach(item => { this.list.forEach(item => {
this.toggleCheck(item, status) this.toggleCheck(item, status)
}) })
}, },
reLoad() { async reLoad() {
this.queryParams.page = 1 this.queryParams.page = 1
this.list = [] this.list = []
this.getList() await this.getList()
}, },
loadNextPage() { loadNextPage() {
if (this.page >= this.pages) { if (this.page >= this.pages) {
...@@ -169,19 +194,11 @@ export default { ...@@ -169,19 +194,11 @@ export default {
this.queryParams.page++ this.queryParams.page++
this.getList() this.getList()
}, },
getList() { async getList() {
this.loading = true this.loading = true
getProductPage(this.queryParams).then(res => { let res = await getSimpleProductList(this.queryParams)
this.list = res.data.list //.concat(res.data.list || [])
this.page = res.data.page
this.pages = res.data.pages
this.total = res.data.total
// 必须在搜索之后才显示勾选,这个时候才有数量
this.showFiltered = !!this.queryParams.attrId || !!this.queryParams.titleZh || !!this.queryParams.typeId
}).finally(() => {
this.loading = false this.loading = false
}) this.list = res.data
}, },
// 获得指定条件的商品的全部ID // 获得指定条件的商品的全部ID
getFilteredIds(){ getFilteredIds(){
......
...@@ -191,7 +191,7 @@ export default { ...@@ -191,7 +191,7 @@ export default {
this.$emit('input', data) this.$emit('input', data)
this.dialogVisible = false this.dialogVisible = false
if (this.isEditing || this.warehouseInId) { if ((this.isEditing || this.warehouseInId) && this.warehouseInId) {
updateWarehouseInLocation({ updateWarehouseInLocation({
"orderId": this.orderId, "orderId": this.orderId,
"orderItemId": this.orderItemId, "orderItemId": this.orderItemId,
......
...@@ -3832,7 +3832,7 @@ ...@@ -3832,7 +3832,7 @@
"流程详情": "Flow details", "流程详情": "Flow details",
"收款单核销审核": "The payment voucher verification review", "收款单核销审核": "The payment voucher verification review",
"系统提示": "System prompt", "系统提示": "System prompt",
"合计:{totalNum}箱,{totalVolume}m³(测) {totalChargeVolume}m³(重) {totalWeight}KG": "Total:{totalNum}Box,{totalVolume}m³(Test) {totalChargeVolume}m³(Weight) {totalWeight}KG", "合计:{totalNum}箱,{totalVolume}m³(测) {totalChargeVolume}m³(重) {totalWeight}KG(测), {totalChargeWeight}kg(收费)": "Total:{totalNum}Box,{totalVolume}m³(measure) {totalChargeVolume}m³(Weight) {totalWeight}KG(measure),{totalChargeWeight}kg(charge)",
"确定要取消此报价单么?": "Are you sure you want to cancel this quote?", "确定要取消此报价单么?": "Are you sure you want to cancel this quote?",
"确定要恢复此报价单么?": "Are you sure you want to restore this quote?", "确定要恢复此报价单么?": "Are you sure you want to restore this quote?",
"确定要删除此报价单么?": "Are you sure you want to delete this quote?", "确定要删除此报价单么?": "Are you sure you want to delete this quote?",
......
...@@ -86,7 +86,7 @@ ...@@ -86,7 +86,7 @@
</el-table-column> </el-table-column>
</el-table> </el-table>
<!-- 分页组件 --> <!-- 分页组件 -->
<pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNo" :limit.sync="queryParams.pageSize" <pagination v-show="total > 0" :total="total" :page.sync="queryParams.page" :limit.sync="queryParams.rows"
@pagination="getList"/> @pagination="getList"/>
<!-- 对话框(添加 / 修改) --> <!-- 对话框(添加 / 修改) -->
...@@ -158,8 +158,10 @@ export default { ...@@ -158,8 +158,10 @@ export default {
dateRangeCreateTime: [], dateRangeCreateTime: [],
// 查询参数 // 查询参数
queryParams: { queryParams: {
pageNo: 1, // pageNo: 1,
pageSize: 10, // pageSize: 10,
page: 1,
rows: 10,
titleZh: null, titleZh: null,
titleEn: null, titleEn: null,
validateStart: null, validateStart: null,
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
<div class="message-title">{{$t(`您确定撤销${cancelClearInfo.orderNo}已清关状态吗?`)}}</div> <div class="message-title">{{$t(`您确定撤销${cancelClearInfo.orderNo}已清关状态吗?`)}}</div>
<el-form ref="arrivalForm" :rules="rules" :model="cusClearanceObj" label-width="120px"> <el-form ref="arrivalForm" :rules="rules" :model="cusClearanceObj" label-width="120px">
<el-form-item :label="$t('撤销理由')" prop="clEstTime"> <el-form-item :label="$t('撤销理由')" prop="clEstTime">
<el-input v-if="[0,3,4].includes(apply.approvalStatus)" v-model="cusClearanceObj.applyReason" type="textarea" :rows="4"></el-input> <el-input v-if="!flag" v-model="cusClearanceObj.applyReason" type="textarea" :rows="4"></el-input>
<template v-else> <template v-else>
{{apply.applyReason}} {{apply.applyReason}}
</template> </template>
...@@ -11,9 +11,9 @@ ...@@ -11,9 +11,9 @@
</el-form> </el-form>
<el-row class="operate-button"> <el-row class="operate-button">
<el-button v-if="[0,3,4].includes(apply.approvalStatus)" type="primary" @click="onSubmit">{{$t('确定')}}</el-button> <el-button v-if="!flag" type="primary" @click="onSubmit">{{$t('确定')}}</el-button>
<el-button v-if="apply.approvalStatus == 1" type="primary" @click="$router.push({path: '/bpm/process-instance/detail', query: {id: apply.bpmProcessId}})">{{$t('审核中')}}</el-button> <el-button v-if="flag" type="primary" @click="$router.push({path: '/bpm/process-instance/detail', query: {id: apply.bpmProcessId}})">{{$t('审核中')}}</el-button>
<el-button v-if="apply.approvalStatus == 1" plain type="primary" @click="canclAudit">{{$t('取消审核')}}</el-button> <el-button v-if="flag" plain type="primary" @click="canclAudit">{{$t('取消审核')}}</el-button>
<el-button @click="cancel">{{$t('取消')}}</el-button> <el-button @click="cancel">{{$t('取消')}}</el-button>
</el-row> </el-row>
</div> </div>
...@@ -41,7 +41,8 @@ export default { ...@@ -41,7 +41,8 @@ export default {
{ required: true, message: this.$t("必填"), trigger: "change" }, { required: true, message: this.$t("必填"), trigger: "change" },
] ]
}, },
apply: {} apply: {},
flag: false
}; };
}, },
created() { created() {
...@@ -50,6 +51,9 @@ export default { ...@@ -50,6 +51,9 @@ export default {
console.log(order,11,this.cancelClearInfo.orderId,orders); console.log(order,11,this.cancelClearInfo.orderId,orders);
if(order){ if(order){
this.apply = order this.apply = order
if(this.apply.approvalStatus == 1){
this.flag = true
}
} }
}, },
methods: { methods: {
......
...@@ -26,7 +26,7 @@ ...@@ -26,7 +26,7 @@
</div> </div>
</div> </div>
<el-table :data="loadDetail.sectionOrderList" border class="mt-10"> <el-table :data="orders" border class="mt-10">
<el-table-column prop="orderNo" :label="$t('订单号')" align="center"> <el-table-column prop="orderNo" :label="$t('订单号')" align="center">
<template v-slot="{row}"> <template v-slot="{row}">
<el-button type="text" @click="jumpOrderDetail(row)">{{row.orderNo}}</el-button> <el-button type="text" @click="jumpOrderDetail(row)">{{row.orderNo}}</el-button>
...@@ -152,6 +152,10 @@ export default { ...@@ -152,6 +152,10 @@ export default {
}, },
}, },
computed: { computed: {
orders() {
if (!this.loadDetail) return [];
return this.loadDetail.sectionOrderList?.filter(item => this.details.orderIds?.indexOf(item.orderId) > -1)
},
/* 渠道 */ /* 渠道 */
getShipChannelName() { getShipChannelName() {
return (shippingChannelId) => { return (shippingChannelId) => {
......
...@@ -125,7 +125,10 @@ ...@@ -125,7 +125,10 @@
</el-dropdown-menu> </el-dropdown-menu>
</el-dropdown> </el-dropdown>
<el-dropdown trigger="click" @command="(command)=>handleCommand(scope.row, command)" v-hasPermi="['shipment:box:download:downloadPreloadGoodsList','shipment:box:download:downloadLoadGoodsList','shipment:box:download:downloadReceivableList','shipment:box:download:downloadAgentListFiles','shipment:box:download:downloadSoncapFiles','shipment:box:download:zipDownload','shipment:box:download:downloadLadingCopy']"> <el-dropdown trigger="click" @command="(command)=>handleCommand(scope.row, command)" v-hasPermi="['shipment:air:download:downloadPreloadGoodsList',
'shipment:air:download:downloadLoadGoodsList','shipment:air:download:downloadReceivableList',
'shipment:air:download:downloadAgentListFiles','shipment:air:download:downloadSoncapFiles',
'shipment:air:download:zipDownload','shipment:air:download:downloadLadingCopy']">
<el-button type="primary"> <el-button type="primary">
{{$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>
...@@ -234,8 +237,8 @@ export default { ...@@ -234,8 +237,8 @@ export default {
cabinetList:[], cabinetList:[],
dateTypes: [ dateTypes: [
{ value: '1', label: this.$t('分拣时间') }, { value: '1', label: this.$t('分拣时间') },
{ value: '2', label: this.$t('装柜时间') }, { value: '7', label: this.$t('出仓时间') },
{ value: '3', label: this.$t('时间') }, { value: '3', label: this.$t('时间') },
{ value: '4', label: this.$t('到港时间') }, { value: '4', label: this.$t('到港时间') },
{ value: '5', label: this.$t('清关时间') }, { value: '5', label: this.$t('清关时间') },
{ value: '6', label: this.$t('提货时间') } { value: '6', label: this.$t('提货时间') }
......
...@@ -213,7 +213,7 @@ import { ...@@ -213,7 +213,7 @@ import {
getbox, getbox,
getboxPage, getboxPage,
exportboxExcel, exportboxExcel,
getNoticeList, dealCustomsSplitNotify, exportPreloadGoodsList, zipDownload, getNoticeList, dealCustomsSplitNotify, exportSeaPreloadGoodsList, zipDownload,
} from "@/api/ecw/box"; } from "@/api/ecw/box";
import { import {
downloadFile, downloadFile,
...@@ -495,7 +495,7 @@ export default { ...@@ -495,7 +495,7 @@ export default {
// this.$t("预装单") + `(${row.selfNo}).xlsx`, // this.$t("预装单") + `(${row.selfNo}).xlsx`,
// "xlsx" // "xlsx"
// ); // );
this.exportExcel(exportPreloadGoodsList, { shipmentId: row.id }, this.$t("预装单") + `(${row.selfNo}).xlsx`) this.exportExcel(exportSeaPreloadGoodsList, { shipmentId: row.id }, this.$t("预装单") + `(${row.selfNo}).xlsx`)
break; break;
case "downloadLoadGoodsList": case "downloadLoadGoodsList":
downloadFile( downloadFile(
......
...@@ -101,7 +101,7 @@ ...@@ -101,7 +101,7 @@
<el-dialog :title="dialogCfg.title" :visible.sync="dialogCfg.visible" :width="dialogCfg.width" :fullscreen="dialogCfg.fullscreen" append-to-body class="shippingSea-dialog" @closed="dialogclosed"> <el-dialog :title="dialogCfg.title" :visible.sync="dialogCfg.visible" :width="dialogCfg.width" :fullscreen="dialogCfg.fullscreen" append-to-body class="shippingSea-dialog" @closed="dialogclosed">
<makeLadingBill v-if="dialogCfg.visible && ['makeBill','queryBill','resetBill'].includes(dialogCfg.type)" :currData="currData" :currRow="currRow" :dialogCfg="dialogCfg" @closeDialog="closeDialog" :selfNo="shipmentObj.selfNo" /> <makeLadingBill v-if="dialogCfg.visible && ['makeBill','queryBill','resetBill'].includes(dialogCfg.type)" :currData="currData" :currRow="currRow" :dialogCfg="dialogCfg" @closeDialog="closeDialog" :selfNo="shipmentObj.selfNo" />
<previewBill v-if="dialogCfg.type === 'previewBill'" :contentHtml="currData.billContent" :currRow="currRow" :type="dialogCfg.type" /> <previewBill v-if="dialogCfg.type === 'previewBill'" :contentHtml="currData.billContent" :currRow="currRow" :type="dialogCfg.type" :air="type === 'air'" />
</el-dialog> </el-dialog>
</el-row> </el-row>
</template> </template>
...@@ -195,14 +195,14 @@ export default { ...@@ -195,14 +195,14 @@ export default {
this.getBillList(); this.getBillList();
} }
}, },
handleCommand(type, row) { async handleCommand(type, row) {
this.handleType = type; this.handleType = type;
switch (type) { switch (type) {
case "previewBill": case "previewBill":
this.getBill(row); this.getBill(row);
break; break;
case "makeBill": case "makeBill":
this.makeBill(row); await this.makeBill(row);
break; break;
case "queryBill": case "queryBill":
this.getBill(row); this.getBill(row);
...@@ -236,9 +236,10 @@ export default { ...@@ -236,9 +236,10 @@ export default {
this.$set(this.dialogCfg, "width", "1200px"); this.$set(this.dialogCfg, "width", "1200px");
this.$set(this.dialogCfg, "visible", true); this.$set(this.dialogCfg, "visible", true);
}, },
makeBill(row) { async makeBill(row) {
let api = this.type != 'air' ? makeBillService : makeAirBillService; let api = this.type != 'air' ? makeBillService : makeAirBillService;
api({ let loading = this.$loading()
await api({
orderId: row.orderId, orderId: row.orderId,
shipmentId: this.shipmentObj.id, shipmentId: this.shipmentObj.id,
}).then((res) => { }).then((res) => {
...@@ -247,8 +248,12 @@ export default { ...@@ -247,8 +248,12 @@ export default {
let billContent = `${titleZh}${data.orderInfo}${contentZh}`; let billContent = `${titleZh}${data.orderInfo}${contentZh}`;
this.currData = { this.currData = {
billContent, billContent,
orderNo: this.currRow.orderNo, orderNo: row.orderNo,
}; };
}).catch(() => {
throw new Error('制作提单失败')
}).finally(() => {
loading.close()
}); });
}, },
getBill(row) { getBill(row) {
......
...@@ -63,7 +63,7 @@ export default { ...@@ -63,7 +63,7 @@ export default {
currData: Object, currData: Object,
currRow: Object, currRow: Object,
dialogCfg: Object, dialogCfg: Object,
selfNo: String selfNo: String,
}, },
data() { data() {
return { return {
......
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
<el-row v-if="currRow.status === 2 && type === 'previewBill'" style="text-align: center;"> <el-row v-if="currRow.status === 2 && type === 'previewBill'" style="text-align: center;">
<el-button type="primary" @click="download">{{$t('下载')}}</el-button> <el-button type="primary" @click="download">{{$t('下载')}}</el-button>
<el-button type="primary" @click="print">{{$t('打印')}}</el-button> <el-button type="primary" @click="print">{{$t('打印')}}</el-button>
<el-button type="primary" @click="createPdf">{{$t('刷新提单文件')}}</el-button> <el-button type="primary" @click="update">{{$t('刷新提单文件')}}</el-button>
</el-row> </el-row>
</el-row> </el-row>
</template> </template>
...@@ -16,6 +16,7 @@ import FileSaver from "file-saver"; ...@@ -16,6 +16,7 @@ import FileSaver from "file-saver";
import html2canvas from 'html2canvas'; import html2canvas from 'html2canvas';
import { jsPDF } from "jspdf"; import { jsPDF } from "jspdf";
import {uploadFile} from '@/api/infra/file' import {uploadFile} from '@/api/infra/file'
import {updateAirBill} from "@/api/ecw/box";
export default { export default {
name: "previewBill", name: "previewBill",
...@@ -23,8 +24,22 @@ export default { ...@@ -23,8 +24,22 @@ export default {
contentHtml: String, contentHtml: String,
currRow: Object, currRow: Object,
type: String, type: String,
// 是否是空运
air: Boolean,
}, },
methods: { methods: {
// 刷新提单
update(){
if(this.air){
let loading = this.$loading()
return updateAirBill(this.currRow.orderId).then(res => {
this.$message.success(this.$t('刷新成功'))
}).finally(() => {
loading.close()
})
}
this.createPdf()
},
download() { download() {
_BOX["downloadBillService"]({ id: this.currRow.id }).then((res) => { _BOX["downloadBillService"]({ id: this.currRow.id }).then((res) => {
if (res.data && res.data.imgUrl) { if (res.data && res.data.imgUrl) {
......
...@@ -108,7 +108,7 @@ ...@@ -108,7 +108,7 @@
<el-table-column prop="" :label="$t('操作')" align="center" width="120px"> <el-table-column prop="" :label="$t('操作')" align="center" width="120px">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button type="primary" size="small" :disabled="scope.row.abnormalDealStatus === 1" @click="()=>updateStatus('single', scope.row)">{{$t('更新状态')}}</el-button> <el-button type="primary" size="small" :disabled="scope.row.abnormalDealStatus === 1" @click="()=>updateStatus('single', scope.row)">{{$t('更新状态')}}</el-button>
<el-button type="primary" size="small" :disabled="shipmentObj.clStatus==132|| (shipmentObj.clearanceInfo == null) || (shipmentObj.clearanceInfo&&shipmentObj.clearanceInfo.clearanceOrderBackList.findIndex(ff=>ff.orderId == scope.row.orderId) == -1)" @click="()=>cancleClear(scope.row)">{{$t('撤销清关申请')}}</el-button> <el-button type="primary" size="small" :disabled="shipmentObj.clStatus==132|| (shipmentObj.clearanceInfo == null) || (shipmentObj.clearanceInfo&&shipmentObj.clearanceInfo.clearanceOrderList.findIndex(ff=>ff.orderId == scope.row.orderId) == -1)" @click="()=>cancleClear(scope.row)">{{$t('撤销清关申请')}}</el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
......
...@@ -160,7 +160,7 @@ export default { ...@@ -160,7 +160,7 @@ export default {
this.$set(this.airArrivalInfo, 'arriveOrderIdList', []) this.$set(this.airArrivalInfo, 'arriveOrderIdList', [])
this.arrivalOrderList = this.$attrs.shipmentObj.airArrivalInfo ? this.$attrs.shipmentObj.airArrivalInfo.arrivalOrderList : [] this.arrivalOrderList = this.$attrs.shipmentObj.airArrivalInfo ? this.$attrs.shipmentObj.airArrivalInfo.arrivalOrderList : []
shipmentOrderList(this.$attrs.shipmentObj.id).then((r) => { shipmentOrderList(this.$attrs.shipmentObj.id).then((r) => {
this.orderList = r.data this.orderList = r.data ?? []
}) })
}, },
computed: { computed: {
...@@ -243,7 +243,9 @@ export default { ...@@ -243,7 +243,9 @@ export default {
this.selectOrders = [] this.selectOrders = []
this.selectOrders.push(val) this.selectOrders.push(val)
let arr = this.arrivalOrderList.find((item) => item.orderId == val.orderId) let arr = this.arrivalOrderList.find((item) => item.orderId == val.orderId)
console.log(arr,'arr');
if (arr) { if (arr) {
console.log(formatDate(arr.actSecondTime),arr.actSecondTime);
this.$set(this.airArrivalInfo, 'actSecondTime', formatDate(arr.actSecondTime)) this.$set(this.airArrivalInfo, 'actSecondTime', formatDate(arr.actSecondTime))
this.$set(this.airArrivalInfo, 'estTime', formatDate(arr.estTime)) this.$set(this.airArrivalInfo, 'estTime', formatDate(arr.estTime))
this.$set(this.airArrivalInfo, 'actTime', formatDate(arr.actTime)) this.$set(this.airArrivalInfo, 'actTime', formatDate(arr.actTime))
......
...@@ -638,7 +638,7 @@ export default { ...@@ -638,7 +638,7 @@ export default {
removeShop(id) { removeShop(id) {
let that = this; let that = this;
that.$confirm(this.$t("是否移除货物吗?")).then(function () { that.$confirm(this.$t("是否移除货物吗?")).then(function () {
deleteSplitItem(id).then((res) => { deleteSplitItem(id, true).then((res) => {
that.$message.success(that.$t("移除成功")); that.$message.success(that.$t("移除成功"));
that.querySplitGoods(); that.querySplitGoods();
}); });
......
...@@ -118,7 +118,7 @@ import dayjs from 'dayjs' ...@@ -118,7 +118,7 @@ import dayjs from 'dayjs'
import { clearanceCreate } from '@/api/ecw/boxSea' import { clearanceCreate } from '@/api/ecw/boxSea'
import { shipmentOrderList } from '@/api/ecw/boxAir' import { shipmentOrderList } from '@/api/ecw/boxAir'
import { formatDateStr, serviceMsg, formatDate } from '../utils' import { formatDateStr, serviceMsg, formatDate } from '../utils'
import { updateOrderArrival } from '@/api/ecw/boxAir' import { createOrderArrival } from '@/api/ecw/boxAir'
/** /**
* 清关 * 清关
...@@ -173,7 +173,7 @@ export default { ...@@ -173,7 +173,7 @@ export default {
if (typeof this.$attrs.shipmentObj.airArrivalInfo?.arrivalOrderList != 'undefined' && this.$attrs.shipmentObj.airArrivalInfo.arrivalOrderList) this.arrivalOrderList = this.$attrs.shipmentObj.airArrivalInfo.arrivalOrderList if (typeof this.$attrs.shipmentObj.airArrivalInfo?.arrivalOrderList != 'undefined' && this.$attrs.shipmentObj.airArrivalInfo.arrivalOrderList) this.arrivalOrderList = this.$attrs.shipmentObj.airArrivalInfo.arrivalOrderList
if (typeof this.$attrs.shipmentObj.clearanceInfo?.clearanceOrderList != 'undefined' && this.$attrs.shipmentObj.clearanceInfo.clearanceOrderList) this.clearanceOrderList = this.$attrs.shipmentObj.clearanceInfo.clearanceOrderList if (typeof this.$attrs.shipmentObj.clearanceInfo?.clearanceOrderList != 'undefined' && this.$attrs.shipmentObj.clearanceInfo.clearanceOrderList) this.clearanceOrderList = this.$attrs.shipmentObj.clearanceInfo.clearanceOrderList
shipmentOrderList(this.$attrs.shipmentObj.id).then((r) => { shipmentOrderList(this.$attrs.shipmentObj.id).then((r) => {
this.orderList = r.data this.orderList = r.data ?? []
}) })
}, },
watch: { watch: {
...@@ -339,10 +339,12 @@ export default { ...@@ -339,10 +339,12 @@ export default {
if (this.cusClearanceObj.clearanceType == 1) { if (this.cusClearanceObj.clearanceType == 1) {
this.$refs['airArrivalForm'].validate((arrvalid) => { this.$refs['airArrivalForm'].validate((arrvalid) => {
if (arrvalid) { if (arrvalid) {
updateOrderArrival({ createOrderArrival({
...this.airArrivalInfo, ...this.airArrivalInfo,
shipmentId: this.$attrs.shipmentObj.id, shipmentId: this.$attrs.shipmentObj.id,
orderIdList: this.cusClearanceObj.clearanceOrderIdList arriveOrderIdList: this.cusClearanceObj.clearanceOrderIdList,
arriveType: 1,
operateType: 2
}).then(() => { }).then(() => {
clearanceCreate({ clearanceCreate({
...this.cusClearanceObj, ...this.cusClearanceObj,
......
...@@ -38,15 +38,19 @@ ...@@ -38,15 +38,19 @@
<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">
<el-table-column align="center" :label="$t('序号')" width="50" type="index" /> <el-table-column align="center" :label="$t('序号')" width="50" type="index" />
<el-table-column :label="$t('箱号')" align="center" prop="pkgNum" /> <el-table-column :label="$t('箱号')" align="center" prop="pkgNum">
<template slot-scope="scope">
<el-button type="text" @click="showPageOrder(scope.row)">{{scope.row.pkgNum}}</el-button>
</template>
</el-table-column>
<el-table-column :label="$t('尺寸')" align="center"> <el-table-column :label="$t('尺寸')" align="center">
<template slot-scope="scope"> {{ scope.row.pkgLength }}*{{ scope.row.pkgWidth }}*{{ scope.row.pkgHight }} </template> <template slot-scope="scope"> {{ scope.row.pkgLength }}*{{ scope.row.pkgWidth }}*{{ scope.row.pkgHight }} </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('订单数')" align="center" prop="orderCount" /> <el-table-column :label="$t('订单数')" align="center" prop="orderCount" />
<el-table-column :label="$t('箱数')" align="center" prop="sumNum" /> <el-table-column :label="$t('箱数')" align="center" prop="sumNum" />
<el-table-column :label="$t('入仓体积')" align="center" prop="sumVolume" /> <el-table-column :label="$t('体积')" align="center" prop="sumVolume" />
<el-table-column :label="$t('入仓重量')" align="center" prop="sumWeight" /> <el-table-column :label="$t('重量')" align="center" prop="sumWeight" />
<el-table-column :label="$t('入仓数量(个)')" align="center" prop="sumQuantity" /> <el-table-column :label="$t('数量(个)')" align="center" prop="sumQuantity" />
<el-table-column :label="$t('状态')" align="center" prop="tallyStatus"> <el-table-column :label="$t('状态')" align="center" prop="tallyStatus">
<template slot-scope="scope"> <template slot-scope="scope">
{{ statusData[scope.row.status] }} {{ statusData[scope.row.status] }}
...@@ -118,6 +122,16 @@ ...@@ -118,6 +122,16 @@
<print-tag v-if="printdialogVisible" :tagData="tagData" /> <print-tag v-if="printdialogVisible" :tagData="tagData" />
</el-dialog> </el-dialog>
<!-- 查看已装箱订单 -->
<el-dialog :title="showPageTitle" :visible.sync="showPagedialogVisible" :fullscreen="true" :modal-append-to-body="false" append-to-body @close="pkgPageType=0">
<div class="flex">
<el-radio-group v-model="pkgPageType">
<el-radio-button :label="2">{{ $t('已装箱列表') }}</el-radio-button>
</el-radio-group>
</div>
<pkg-page :pkgData="showPkgData" :shipmentObj="shipmentObj" flag="show" @closeDialog="closeDialog" @reload="getList" />
</el-dialog>
<el-row style="margin-top: 15px" class="operate-button"> <el-row style="margin-top: 15px" class="operate-button">
<el-button :disabled="shipmentObj.approvaling" size="small" type="primary" @click="finish">{{ $t('完成') }}</el-button> <el-button :disabled="shipmentObj.approvaling" size="small" type="primary" @click="finish">{{ $t('完成') }}</el-button>
<el-button size="small" @click="$emit('closeDialog')">{{ $t('取消') }}</el-button> <el-button size="small" @click="$emit('closeDialog')">{{ $t('取消') }}</el-button>
...@@ -186,7 +200,10 @@ export default { ...@@ -186,7 +200,10 @@ export default {
printdialogVisible: false, printdialogVisible: false,
tagData: {}, tagData: {},
// 是否显示补单弹层 // 是否显示补单弹层
showPackDialog: false showPackDialog: false,
showPagedialogVisible: false,
showPageTitle: '',
showPkgData: {}
} }
}, },
created() { created() {
...@@ -260,6 +277,11 @@ export default { ...@@ -260,6 +277,11 @@ export default {
this.pkgPageTitle = this.$t('合包箱号: ') + row.pkgNum this.pkgPageTitle = this.$t('合包箱号: ') + row.pkgNum
this.pkgData = row this.pkgData = row
}, },
showPageOrder(row) {
this.showPagedialogVisible = true
this.showPageTitle = this.$t('合包箱号: ') + row.pkgNum
this.showPkgData = row
},
printTag(id) { printTag(id) {
getMergeTagById(id).then(res=>{ getMergeTagById(id).then(res=>{
this.tagData = res.data this.tagData = res.data
......
<template> <template>
<div> <div>
<el-row style="margin-top: 25px"> <el-row style="margin-top: 25px">
<el-row> <el-row v-if="flag == 'edit'">
<el-button size="small" type="primary" @click="removeBatch">{{ $t('批量移出合包') }}</el-button> <el-button size="small" type="primary" @click="removeBatch">{{ $t('批量移出合包') }}</el-button>
<el-button size="small" type="primary" @click="sealBox">{{ $t('封箱') }}</el-button> <el-button size="small" type="primary" @click="sealBox">{{ $t('封箱') }}</el-button>
</el-row> </el-row>
...@@ -137,6 +137,10 @@ export default { ...@@ -137,6 +137,10 @@ export default {
props: { props: {
pkgData: Object, pkgData: Object,
shipmentObj: Object, shipmentObj: Object,
flag: {
type: String,
default: 'edit'
}
}, },
components: { components: {
printTag printTag
......
...@@ -18,7 +18,7 @@ ...@@ -18,7 +18,7 @@
</div> </div>
<el-collapse-transition> <el-collapse-transition>
<div v-if="item.fold === false ? true : false"> <div v-if="item.fold === false ? true : false">
<div v-for="(secGoog, index) in item.sectionOrderList" :key="index" class="part-secGoog"> <div v-for="(secGoog, index) in item.sectionOrderList" :key="index" class="part-secGoog-not">
<p>{{secGoog.orderNo}}</p> <p>{{secGoog.orderNo}}</p>
<p>{{secGoog.prodTitleZh}}</p> <p>{{secGoog.prodTitleZh}}</p>
<div> <div>
...@@ -567,6 +567,21 @@ export default { ...@@ -567,6 +567,21 @@ export default {
} }
} }
} }
.part-secGoog-not {
margin-top: 5px;
display: flex;
> p {
margin-right: 10px;
color: #4f9cdd;
}
> div {
flex: 1;
> i {
cursor: pointer;
color: red;
}
}
}
} }
} }
.right-area { .right-area {
......
...@@ -137,12 +137,12 @@ export default { ...@@ -137,12 +137,12 @@ export default {
if(!this.shipmentObj.ladingBillInfo){ if(!this.shipmentObj.ladingBillInfo){
this.$set(this.subMaterialObj,'agentId',this.shipmentObj.agentInfo?.agentId||undefined) this.$set(this.subMaterialObj,'agentId',this.shipmentObj.agentInfo?.agentId||undefined)
this.$set(this.subMaterialObj,'soNo',this.shipmentObj.bookSeaInfo?.sono||undefined) this.$set(this.subMaterialObj,'soNo',this.shipmentObj.bookAirInfo?.sono||undefined)
this.$set(this.subMaterialObj,'blMblNo',this.shipmentObj.bookSeaInfo?.sono||undefined) this.$set(this.subMaterialObj,'blMblNo',this.shipmentObj.bookAirInfo?.blNo||undefined)
this.$set(this.subMaterialObj,'markNo',"N/M") this.$set(this.subMaterialObj,'markNo',"N/M")
this.$set(this.subMaterialObj,'startPortId',this.shipmentObj.bookSeaInfo?.bigPortId||undefined) this.$set(this.subMaterialObj,'startPortId',this.shipmentObj.bookAirInfo?.bigPortId||undefined)
this.$set(this.subMaterialObj,'shipCompanyId',Number(this.shipmentObj.bookSeaInfo?.shipCompanyType)||undefined) this.$set(this.subMaterialObj,'shipCompanyId',Number(this.shipmentObj.bookAirInfo?.shipCompanyType)||undefined)
this.$set(this.subMaterialObj,'destPortId',this.shipmentObj.bookSeaInfo?.destPortId||undefined) this.$set(this.subMaterialObj,'destPortId',this.shipmentObj.bookAirInfo?.destPortId||undefined)
this.$set(this.subMaterialObj,'kgs',this.shipmentObj.customsInfo?.dcGoodsWgt||undefined) this.$set(this.subMaterialObj,'kgs',this.shipmentObj.customsInfo?.dcGoodsWgt||undefined)
this.$set(this.subMaterialObj,'containerSealNo',(this.shipmentObj.trailerInfo?.tlContainerNo||'')+'/'+(this.shipmentObj.trailerInfo?.tlStripSeal||'/')) this.$set(this.subMaterialObj,'containerSealNo',(this.shipmentObj.trailerInfo?.tlContainerNo||'')+'/'+(this.shipmentObj.trailerInfo?.tlStripSeal||'/'))
this.subMaterialObj.containerSealNo = this.subMaterialObj.containerSealNo.replace('//','') this.subMaterialObj.containerSealNo = this.subMaterialObj.containerSealNo.replace('//','')
......
...@@ -305,6 +305,16 @@ export default { ...@@ -305,6 +305,16 @@ export default {
}, },
/** 提交 */ /** 提交 */
onSubmit() { onSubmit() {
// let flag = false
// this.pageData.sectionOrderList.forEach(item=>{
// if(![118428,15].includes(item.status)){
// flag = true
// }
// })
// if(flag){
// this.$message.error(this.$t("存在未到港或未清关的订单"));
// return
// }
if(this.getUnLoadNumCount>0){ if(this.getUnLoadNumCount>0){
approvalCreate({ approvalCreate({
shipmentId: this.$attrs.shipmentObj.id, shipmentId: this.$attrs.shipmentObj.id,
......
...@@ -150,7 +150,7 @@ export default { ...@@ -150,7 +150,7 @@ export default {
} }
} }
console.log(currIndex,this.currIndex) console.log(currIndex,this.currIndex)
if (currIndex > this.currIndex) { if (currIndex > this.currIndex && !['cusClearance', 'unloading'].includes(node.type)) {
this.$message.error(this.errorMsg); this.$message.error(this.errorMsg);
return; return;
} }
...@@ -186,10 +186,6 @@ export default { ...@@ -186,10 +186,6 @@ export default {
break; break;
// 清关 // 清关
case "cusClearance": case "cusClearance":
if((!this.shipmentObj.airArrivalInfo || this.shipmentObj.airArrivalInfo.arriveType == 0) && this.shipmentObj.sapStatus != 152){
this.$message.error(this.$t("请先完成到港操作"));
return;
}
this.$set(this.dialogConfig, "width", "700px"); this.$set(this.dialogConfig, "width", "700px");
break; break;
// AGENT // AGENT
...@@ -224,10 +220,6 @@ export default { ...@@ -224,10 +220,6 @@ export default {
break; break;
// 卸柜 // 卸柜
case "unloading": case "unloading":
if((!this.shipmentObj.clearanceInfo || this.shipmentObj.clearanceInfo.clearanceType == 0) && this.shipmentObj.clStatus != 132){
this.$message.error(this.$t("请先完成清关操作"));
return;
}
// 卸柜反审 // 卸柜反审
const unStatus = this.shipmentObj[node.keyName]; const unStatus = this.shipmentObj[node.keyName];
if ([186].includes(unStatus)) { if ([186].includes(unStatus)) {
...@@ -277,10 +269,6 @@ export default { ...@@ -277,10 +269,6 @@ export default {
if (start.includes(val[keyName]) && val[voName]) { if (start.includes(val[keyName]) && val[voName]) {
node.currStatus = "wait"; node.currStatus = "wait";
if(type === "arrival" || type === "cusClearance"){
++nodeIndex;
continue;
}
} }
if (wait.includes(val[keyName])) { if (wait.includes(val[keyName])) {
......
...@@ -860,8 +860,8 @@ export default { ...@@ -860,8 +860,8 @@ export default {
}, },
removeShop(id) { removeShop(id) {
let that = this; let that = this;
that.$confirm(this.$t("是否移除货物吗?")).then(function () { that.$confirm(this.$t("确定移除货物吗?")).then(function () {
deleteSplitItem(id).then((res) => { deleteSplitItem(id, true).then((res) => {
that.$message.success(that.$t("移除成功")); that.$message.success(that.$t("移除成功"));
that.querySplitGoods(); that.querySplitGoods();
}); });
......
...@@ -17,7 +17,7 @@ ...@@ -17,7 +17,7 @@
</div> </div>
<el-collapse-transition> <el-collapse-transition>
<div v-if="item.fold === false ? true : false"> <div v-if="item.fold === false ? true : false">
<div v-for="(secGoog, index) in item.sectionOrderList" :key="index" class="part-secGoog"> <div v-for="(secGoog, index) in item.sectionOrderList" :key="index" class="part-secGoog-not">
<p>{{secGoog.orderNo}}</p> <p>{{secGoog.orderNo}}</p>
<p>{{secGoog.prodTitleZh}}</p> <p>{{secGoog.prodTitleZh}}</p>
<div> <div>
...@@ -538,6 +538,21 @@ export default { ...@@ -538,6 +538,21 @@ export default {
} }
} }
} }
.part-secGoog-not {
margin-top: 5px;
display: flex;
> p {
margin-right: 10px;
color: #4f9cdd;
}
> div {
flex: 1;
> i {
cursor: pointer;
color: red;
}
}
}
} }
} }
.right-area { .right-area {
......
...@@ -49,12 +49,12 @@ ...@@ -49,12 +49,12 @@
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item :label="$t('始发仓')" prop="destinationId"> <el-form-item :label="$t('始发仓')" prop="destinationId">
<el-select v-model="queryParams.originId" :placeholder="$t('请选择始发仓')" clearable> <el-select v-model="queryParams.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="destinationId"> <el-form-item :label="$t('目的仓')" prop="destinationId">
<el-select :multiple="true" v-model="queryParams.destinationId" multiple :placeholder="$t('请选择目的仓')" clearable> <el-select :multiple="true" v-model="queryParams.destWarehouseIdArr" multiple :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>
...@@ -294,8 +294,13 @@ ...@@ -294,8 +294,13 @@
/** 查询列表 */ /** 查询列表 */
getList() { getList() {
this.loading = true; this.loading = true;
let params = { ...this.queryParams}
if(params.destWarehouseIdArr?.length){
params.destWarehouseIds = params.destWarehouseIdArr?.join(',')
}
// 执行查询 // 执行查询
allAchievementByPage(this.queryParams).then(response => { allAchievementByPage(params).then(response => {
this.list = response.data.myAchievementDtos.list; this.list = response.data.myAchievementDtos.list;
this.total = response.data.myAchievementDtos.total; this.total = response.data.myAchievementDtos.total;
this.myAchievementData = response.data this.myAchievementData = response.data
......
...@@ -93,6 +93,11 @@ ...@@ -93,6 +93,11 @@
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
<el-descriptions :colon="false" style="margin-top:10px">
<el-descriptions-item :label="$t('备注')" :span="2">
{{orderExceptionData.applyNotes}}
</el-descriptions-item>
</el-descriptions>
</div> </div>
</template> </template>
<script> <script>
......
...@@ -60,7 +60,7 @@ ...@@ -60,7 +60,7 @@
</td> </td>
</tr> </tr>
</template> </template>
<tr> <tr style="border-top:2px solid #000">
<td style="text-align:center;width: 50px;" v-if="!preview"> <td style="text-align:center;width: 50px;" v-if="!preview">
</td> </td>
...@@ -68,7 +68,7 @@ ...@@ -68,7 +68,7 @@
</td> </td>
<td style="text-align:center;padding:0 0px;border:1px dashed #ccc;"> <td style="text-align:center;padding:0 0px;border:1px dashed #ccc;">
合计
</td> </td>
<td style="text-align:center;padding:0 0px;border:1px dashed #ccc;"> <td style="text-align:center;padding:0 0px;border:1px dashed #ccc;">
{{calcTotal('cartonsNum')}} {{calcTotal('cartonsNum')}}
......
...@@ -88,8 +88,7 @@ ...@@ -88,8 +88,7 @@
</template> </template>
<template v-else> <template v-else>
{{$t('全包价')}}<el-input v-model="scope.row.oneSeaFreight" @change="updateField(scope.row, 'oneSeaFreight')" size="mini" style="width: 80px"></el-input> {{$t('全包价')}}<el-input v-model="scope.row.oneSeaFreight" @change="updateField(scope.row, 'oneSeaFreight')" size="mini" style="width: 80px"></el-input>
{{currencyMap[scope.row.currencyId]}} {{currencyMap[scope.row.seaFreightCurrency]}} / {{unitMap[scope.row.seaFreightVolume]}}
{{unitMap[scope.row.clearanceFreightVolume]}}
</template> </template>
</template> </template>
</el-table-column> </el-table-column>
......
...@@ -58,6 +58,11 @@ ...@@ -58,6 +58,11 @@
</image-display> </image-display>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('备注')" prop="remark" >
<template slot-scope="{row}">
{{row.remark}}
</template>
</el-table-column>
</el-table> </el-table>
</el-dialog> </el-dialog>
</template> </template>
......
...@@ -192,6 +192,12 @@ ...@@ -192,6 +192,12 @@
<el-descriptions-item :label="$t('特殊要求备注')"> <el-descriptions-item :label="$t('特殊要求备注')">
{{order.packageRemarks}} {{order.packageRemarks}}
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item :label="$t('目的港清关')">
{{['', $t('我司承接'), $t('客户自清')][order.portDestCustomsClear] || ''}}
</el-descriptions-item>
<el-descriptions-item :label="$t('发货方式')">
{{['', $t('多票'), $t('单票')][order.deliveryWay] || ''}}
</el-descriptions-item>
</el-descriptions> </el-descriptions>
</el-card> </el-card>
<el-card class="card"> <el-card class="card">
......
...@@ -223,7 +223,7 @@ ...@@ -223,7 +223,7 @@
{{$t('件数')}} <span class="red">*</span> {{$t('件数')}} <span class="red">*</span>
</template> </template>
<template slot-scope="{row}"> <template slot-scope="{row}">
<el-input v-model.number="row.num" @keyup.native="checkPositiveInterge(row, 'num')" :disabled="!canAddProduct || !productEditable" /> <el-input-number :min="0" :controls="false" style="width: 65px" v-model.number="row.num" :disabled="!canAddProduct || !productEditable" />
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('包装单位')" width="100px"> <el-table-column :label="$t('包装单位')" width="100px">
...@@ -236,7 +236,7 @@ ...@@ -236,7 +236,7 @@
</el-table-column> </el-table-column>
<el-table-column :label="`${$t('数量')}(${$t('个')})`" width="120px"> <el-table-column :label="`${$t('数量')}(${$t('个')})`" width="120px">
<template slot-scope="{row}"> <template slot-scope="{row}">
<el-input v-model="row.quantity" @keyup.native="checkPositiveInterge(row, 'quantity')" :disabled="!canAddProduct || !productEditable" /> <el-input-number :min="1" :step="1" style="width: 80px;" :controls="false" v-model="row.quantity" :disabled="!canAddProduct || !productEditable" />
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('总体积') + '(m³)'" width="120px"> <el-table-column :label="$t('总体积') + '(m³)'" width="120px">
...@@ -248,7 +248,7 @@ ...@@ -248,7 +248,7 @@
]" ]"
class="mb-0 mr-0" class="mb-0 mr-0"
> >
<el-input v-model="scope.row.volume" :disabled="!canAddProduct || !productEditable" /> <el-input-number :min="0" v-model="scope.row.volume" :disabled="!canAddProduct || !productEditable" :controls="false" style="width: 80px" />
</el-form-item> </el-form-item>
</template> </template>
</el-table-column> </el-table-column>
...@@ -261,7 +261,7 @@ ...@@ -261,7 +261,7 @@
]" ]"
class="mb-0 mr-0" class="mb-0 mr-0"
> >
<el-input v-model="scope.row.weight" :disabled="!canAddProduct || !productEditable" /> <el-input-number :min="0" :controls="false" style="width: 80px" v-model="scope.row.weight" :disabled="!canAddProduct || !productEditable" />
</el-form-item> </el-form-item>
</template> </template>
</el-table-column> </el-table-column>
...@@ -279,7 +279,7 @@ ...@@ -279,7 +279,7 @@
class="mb-0 mr-0" class="mb-0 mr-0"
> >
<!--input事件在快速输入的时候,可能最后拿到的结果不是最后输入的参数,所以改成在blur的时候计算--> <!--input事件在快速输入的时候,可能最后拿到的结果不是最后输入的参数,所以改成在blur的时候计算-->
<el-input v-model.number="scope.row.worth" :disabled="!canAddProduct" @blur="calculationPrice" type="number" /> <el-input-number :min="0" :controls="false" style="width: 80px" v-model.number="scope.row.worth" :disabled="!canAddProduct" @blur="calculationPrice" />
</el-form-item> </el-form-item>
</template> </template>
</el-table-column> </el-table-column>
...@@ -1075,12 +1075,7 @@ export default { ...@@ -1075,12 +1075,7 @@ export default {
this.updateChannel = this.$route.query.updateChannel == 1 this.updateChannel = this.$route.query.updateChannel == 1
}, },
async created() { async created() {
this.productAttrList = (await getProductAttrList()).data // 初始化自定义付款人需要在前面,否则先执行activated里的getOrder,会被覆盖
this.channelList = (await getChannelList()).data
this.tradeCityList = (await getTradeCityList()).data
this.currencyList = (await getCurrencyList()).data
this.unitList = (await getUnitList()).data
this.transportList = this.getDictDatas(this.DICT_TYPE.ECW_TRANSPORT_TYPE)
this.getDictDatas(this.DICT_TYPE.ECW_CUSTOM_DRAWEE).forEach(item => { this.getDictDatas(this.DICT_TYPE.ECW_CUSTOM_DRAWEE).forEach(item => {
this.customDraweeList.push({ this.customDraweeList.push({
label: item.label, // 显示文字 label: item.label, // 显示文字
...@@ -1088,6 +1083,14 @@ export default { ...@@ -1088,6 +1083,14 @@ export default {
value: 2 // 1 发货人,2收货人,默认收货人,可修改 value: 2 // 1 发货人,2收货人,默认收货人,可修改
}) })
}) })
this.productAttrList = (await getProductAttrList()).data
this.channelList = (await getChannelList()).data
this.tradeCityList = (await getTradeCityList()).data
this.currencyList = (await getCurrencyList()).data
this.unitList = (await getUnitList()).data
this.transportList = this.getDictDatas(this.DICT_TYPE.ECW_TRANSPORT_TYPE)
if(this.$route.query.transportType){ if(this.$route.query.transportType){
this.$set(this.form, 'transportId', +this.$route.query.transportType) this.$set(this.form, 'transportId', +this.$route.query.transportType)
} }
...@@ -1110,11 +1113,12 @@ export default { ...@@ -1110,11 +1113,12 @@ export default {
onTableMounted(e){ onTableMounted(e){
// console.warn('onTableMounted', e) // console.warn('onTableMounted', e)
}, },
getOrder(){ async getOrder(){
if(this.form.orderId == this.$route.query.id){ if(this.form.orderId == this.$route.query.id){
console.log('加载中或者已加载此订单数据,不重复加载', this.initing, this.form.orderId, this.$route.query.id) console.log('加载中或者已加载此订单数据,不重复加载', this.initing, this.form.orderId, this.$route.query.id)
return return
} }
this.$nextTick()
this.initing = true this.initing = true
getUpdateInfo(this.$route.query.id).then(res => { getUpdateInfo(this.$route.query.id).then(res => {
this.form = Object.assign({}, {...res.data}, {orderItemVOList: []}) this.form = Object.assign({}, {...res.data}, {orderItemVOList: []})
...@@ -1168,9 +1172,12 @@ export default { ...@@ -1168,9 +1172,12 @@ export default {
// 如果是自定义付款人,则需要同步具体发货人信息 // 如果是自定义付款人,则需要同步具体发货人信息
if(this.form.drawee == 3){ if(this.form.drawee == 3){
console.log('同步自定义付款人信息', JSON.stringify(this.customDraweeList))
this.customDraweeList.forEach(item => { this.customDraweeList.forEach(item => {
console.log(item.name, this.form.customDraweeVOList.find(it => it.name == item.name)?.value , item.value)
item.value = this.form.customDraweeVOList.find(it => it.name == item.name)?.value || item.value item.value = this.form.customDraweeVOList.find(it => it.name == item.name)?.value || item.value
}) })
console.log('同步自定义付款人信息', this.customDraweeList, this.form.customDraweeVOList)
} }
// 如果已完成入仓,则需要监听必填内容,发生更改后需要填写审批表单 // 如果已完成入仓,则需要监听必填内容,发生更改后需要填写审批表单
......
...@@ -202,15 +202,15 @@ ...@@ -202,15 +202,15 @@
<el-table-column :label="$t('体积/重量')" align="center"> <el-table-column :label="$t('体积/重量')" align="center">
<template slot-scope="scope"> <template slot-scope="scope">
<div v-if="scope.row.orderType==1"> <div v-if="scope.row.orderType==1">
<span v-if="scope.row.orderStatus >= 5 ">{{scope.row.volume+"m³/"+scope.row.weight+"kg"}}</span> <span v-if="scope.row.status >= 5 ">{{scope.row.volume+"m³/"+scope.row.weight+"kg"}}</span>
<span v-else>{{scope.row.totalVolume+"m³/"+scope.row.totalWeight+"kg"}}</span> <span v-else>{{scope.row.totalVolume+"m³/"+scope.row.totalWeight+"kg"}}</span>
</div> </div>
<el-tooltip v-else-if="scope.row.orderType==2" class="item" effect="dark" :content="(scope.row.wvolume||0)+'m³'" placement="bottom"> <el-tooltip v-else-if="scope.row.orderType==2" class="item" effect="dark" :content="(scope.row.wvolume||0)+'m³'" placement="bottom">
<span class="red" v-if="scope.row.orderStatus >= 5 ">{{scope.row.volume+"m³/"+scope.row.weight+"kg"}}</span> <span class="red" v-if="scope.row.status >= 5 ">{{scope.row.volume+"m³/"+scope.row.weight+"kg"}}</span>
<span class="red" v-else>{{scope.row.totalVolume+"m³/"+scope.row.totalWeight+"kg"}}</span> <span class="red" v-else>{{scope.row.totalVolume+"m³/"+scope.row.totalWeight+"kg"}}</span>
</el-tooltip> </el-tooltip>
<el-tooltip v-else-if="scope.row.orderType==3" class="item" effect="dark" :content="(scope.row.vweight||0)+'kg'" placement="bottom"> <el-tooltip v-else-if="scope.row.orderType==3" class="item" effect="dark" :content="(scope.row.vweight||0)+'kg'" placement="bottom">
<span class="red" v-if="scope.row.orderStatus >= 5 ">{{scope.row.volume+"m³/"+scope.row.weight+"kg"}}</span> <span class="red" v-if="scope.row.status >= 5 ">{{scope.row.volume+"m³/"+scope.row.weight+"kg"}}</span>
<span class="red" v-else>{{scope.row.totalVolume+"m³/"+scope.row.totalWeight+"kg"}}</span> <span class="red" v-else>{{scope.row.totalVolume+"m³/"+scope.row.totalWeight+"kg"}}</span>
</el-tooltip> </el-tooltip>
</template> </template>
...@@ -226,10 +226,10 @@ ...@@ -226,10 +226,10 @@
<dict-tag :type="DICT_TYPE.INFRA_BOOLEAN_STRING" :value="scope.row.isCargoControl" /> <dict-tag :type="DICT_TYPE.INFRA_BOOLEAN_STRING" :value="scope.row.isCargoControl" />
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('订单状态')" align="center" prop="orderExceptionAmount" > <el-table-column :label="$t('订单状态')" align="center" prop="statusMsg" >
<template slot-scope="scope"> <!-- <template slot-scope="scope">
<dict-tag :type="DICT_TYPE.ORDER_STATUS" :value="scope.row.orderStatus" /> <dict-tag :type="DICT_TYPE.ORDER_STATUS" :value="scope.row.orderStatus" />
</template> </template> -->
</el-table-column> </el-table-column>
<el-table-column :label="$t('异常状态')" align="center"> <el-table-column :label="$t('异常状态')" align="center">
<template slot-scope="scope"> <template slot-scope="scope">
......
...@@ -172,7 +172,7 @@ ...@@ -172,7 +172,7 @@
</el-col> </el-col>
<el-col :span="15" v-if="statistics"> <el-col :span="15" v-if="statistics">
<!-- 订单列表显示搜索条件对应箱数、仓库实测、收款方数、重量 --> <!-- 订单列表显示搜索条件对应箱数、仓库实测、收款方数、重量 -->
{{$t('合计:{totalNum}箱,{totalVolume}m³(测) {totalChargeVolume}m³(重) {totalWeight}KG', statistics)}} {{$t('合计:{totalNum}箱,{totalVolume}m³(测) {totalChargeVolume}m³(重) {totalWeight}KG(测), {totalChargeWeight}kg(收费)', statistics)}}
</el-col> </el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar> <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row> </el-row>
...@@ -396,7 +396,8 @@ ...@@ -396,7 +396,8 @@
'ecw:order:warehouse_exit', 'ecw:order:warehouse_exit',
'ecw:order:warehouse_adjustment', 'ecw:order:warehouse_adjustment',
'ecw:order:warehouse_transfer', 'ecw:order:warehouse_transfer',
'ecw:order:warehouse_arrive' 'ecw:order:warehouse_arrive',
'ecw:order:stocking'
]"> ]">
<el-button type="text">{{$t('仓库')}}</el-button> <el-button type="text">{{$t('仓库')}}</el-button>
<el-dropdown-menu slot="dropdown"> <el-dropdown-menu slot="dropdown">
......
...@@ -1197,12 +1197,6 @@ ...@@ -1197,12 +1197,6 @@
that.loading = true; that.loading = true;
getExceptionById(that.orderExceptionId).then(response => { getExceptionById(that.orderExceptionId).then(response => {
that.orderExceptionData = response.data; that.orderExceptionData = response.data;
// that.orderExceptionData.orderExceptionType = 'order_other_exception'
// that.orderExceptionData.orderExceptionType = 'order_miss_exception'
// that.orderExceptionData.orderExceptionType = 'not_customer_service_exception'
// that.orderExceptionData.orderExceptionType = 'not_shipping_channel_exception'
// that.orderExceptionData.orderExceptionType = 'channel_exception'
// that.orderExceptionData.orderExceptionType = 'fee_exception'
that.loading = false; that.loading = false;
that.orderId = response.data.orderId that.orderId = response.data.orderId
that.getOrderData() that.getOrderData()
...@@ -1272,7 +1266,7 @@ ...@@ -1272,7 +1266,7 @@
if(response.data.customerId){ if(response.data.customerId){
this.getCustomerData(response.data.customerId) this.getCustomerData(response.data.customerId)
} }
if(['overweight_exception','not_shipping_channel_exception','channel_packaging_overweight_exception'].indexOf(this.orderExceptionData.orderExceptionType)>-1){ if(['overweight_exception','not_shipping_channel_exception','channel_packaging_overweight_exception','channel_exception'].indexOf(this.orderExceptionData.orderExceptionType)>-1){
// this.handlerParams.channelPriceList = [] // this.handlerParams.channelPriceList = []
this.getOpenedRouterList() this.getOpenedRouterList()
if(this.orderExceptionData.orderExceptionStatus==0){ if(this.orderExceptionData.orderExceptionStatus==0){
...@@ -1286,10 +1280,11 @@ ...@@ -1286,10 +1280,11 @@
v.clearanceFreightVolume = this.unitList[1]['id'] v.clearanceFreightVolume = this.unitList[1]['id']
} }
}) })
}else if(this.orderExceptionData.orderExceptionType=='line_loop_exception'){
this.getExceptionPriceList('line_loop_exception',1)
} }
} }
if(this.orderExceptionData.orderExceptionType=='line_loop_exception'){
this.getExceptionPriceList('line_loop_exception',1)
}
if(this.handlerParams.orderExceptionHandlerResult=='continue_channel'){ if(this.handlerParams.orderExceptionHandlerResult=='continue_channel'){
this.getExceptionPriceList('continue_channel',1) this.getExceptionPriceList('continue_channel',1)
} }
...@@ -1311,6 +1306,7 @@ ...@@ -1311,6 +1306,7 @@
getOrderExcptionResult(){ getOrderExcptionResult(){
getOrderExcptionResult({orderExceptionId:this.orderExceptionId}).then(res=>{ getOrderExcptionResult({orderExceptionId:this.orderExceptionId}).then(res=>{
this.handlerParams = Object.assign(this.handlerParams,res.data.list[0]) this.handlerParams = Object.assign(this.handlerParams,res.data.list[0])
if(!this.orderExceptionData.handlerTime){ if(!this.orderExceptionData.handlerTime){
this.orderExceptionData.handlerTime = this.handlerParams.handlerTime this.orderExceptionData.handlerTime = this.handlerParams.handlerTime
} }
...@@ -1654,6 +1650,7 @@ ...@@ -1654,6 +1650,7 @@
} }
} }
}) })
console.log(that.loopOrderItem)
}else{ }else{
getOrderExceptionChannelPriceList({orderId:that.orderId,exceptionId:parseInt(that.orderExceptionId),exceptionResultId:that.handlerParams.id}).then(res=>{ getOrderExceptionChannelPriceList({orderId:that.orderId,exceptionId:parseInt(that.orderExceptionId),exceptionResultId:that.handlerParams.id}).then(res=>{
if(res.code==0){ if(res.code==0){
......
...@@ -215,20 +215,25 @@ ...@@ -215,20 +215,25 @@
<template slot-scope="scope"> <template slot-scope="scope">
<template v-if="scope.row.charging != 1"> <template v-if="scope.row.charging != 1">
<div class="flex"> <div class="flex">
{{$t('运费')}} {{$t('运费')}}:
<template v-if="scope.row.oneSeaFreight">
<el-input v-model="scope.row.oneSeaFreight" @change="updateField(scope.row, 'oneSeaFreight')" size="mini" style="width: 80px"></el-input> <el-input v-model="scope.row.oneSeaFreight" @change="updateField(scope.row, 'oneSeaFreight')" size="mini" style="width: 80px"></el-input>
{{currencyMap[scope.row.seaFreightCurrency]}} / {{unitMap[scope.row.seaFreightVolume]}} {{currencyMap[scope.row.seaFreightCurrency]}} / {{unitMap[scope.row.seaFreightVolume]}}
</template>
<template v-else>{{$t('未报价')}}</template>
</div> </div>
<div class="flex"> <div class="flex">
{{$t('清关费')}} {{$t('清关费')}}:
<template v-if="scope.row.oneClearanceFreight">
<el-input v-model="scope.row.oneClearanceFreight" @change="updateField(scope.row, 'oneClearanceFreight')" size="mini" style="width: 80px"></el-input> <el-input v-model="scope.row.oneClearanceFreight" @change="updateField(scope.row, 'oneClearanceFreight')" size="mini" style="width: 80px"></el-input>
{{currencyMap[scope.row.clearanceFreightCurrency]}} / {{unitMap[scope.row.clearanceFreightVolume]}} {{currencyMap[scope.row.clearanceFreightCurrency]}} / {{unitMap[scope.row.clearanceFreightVolume]}}
</template>
<template v-else>{{$t('未报价')}}</template>
</div> </div>
</template> </template>
<template v-else> <template v-else>
{{$t('全包价')}}<el-input v-model="scope.row.oneSeaFreight" @change="updateField(scope.row, 'oneSeaFreight')" size="mini" style="width: 80px"></el-input> {{$t('全包价')}}<el-input v-model="scope.row.oneSeaFreight" @change="updateField(scope.row, 'oneSeaFreight')" size="mini" style="width: 80px"></el-input>
{{currencyMap[scope.row.currencyId]}} {{currencyMap[scope.row.seaFreightCurrency]}} / {{unitMap[scope.row.seaFreightVolume]}}
{{unitMap[scope.row.clearanceFreightVolume]}}
</template> </template>
</template> </template>
</el-table-column> </el-table-column>
...@@ -261,7 +266,7 @@ ...@@ -261,7 +266,7 @@
<el-form-item :label="$t('运输方式')"> <el-form-item :label="$t('运输方式')">
<dict-selector :clearable="true" :type="DICT_TYPE.ECW_TRANSPORT_TYPE" @change="changeTransport" v-model="form.transportId" /> <dict-selector :clearable="true" :type="DICT_TYPE.ECW_TRANSPORT_TYPE" @change="changeTransport" v-model="form.transportId" />
</el-form-item> </el-form-item>
<el-form-item :label="$t('出货渠道')" v-if="getDictData(DICT_TYPE.ECW_TRANSPORT_TYPE, form.transportId).cssClass == 'channel'"> <el-form-item :label="$t('出货渠道')" prop="channelId" v-if="getDictData(DICT_TYPE.ECW_TRANSPORT_TYPE, form.transportId).cssClass == 'channel'">
<el-select v-model="form.channelId" :placeholder="$t('请选择出货渠道')" :clearable="true"> <el-select v-model="form.channelId" :placeholder="$t('请选择出货渠道')" :clearable="true">
<el-option :disabled="getDictData(DICT_TYPE.ECW_TRANSPORT_TYPE, form.transportId).cssClass != 'channel'" v-for="item in channelData" :key="item.channelId" :label="$l(item, 'name')" :value="item.channelId"/> <el-option :disabled="getDictData(DICT_TYPE.ECW_TRANSPORT_TYPE, form.transportId).cssClass != 'channel'" v-for="item in channelData" :key="item.channelId" :label="$l(item, 'name')" :value="item.channelId"/>
</el-select> </el-select>
...@@ -569,7 +574,7 @@ export default { ...@@ -569,7 +574,7 @@ export default {
rules: { rules: {
transportId: [{ required: true, message: this.$t("请选择运输方式"), trigger: "change" }], transportId: [{ required: true, message: this.$t("请选择运输方式"), trigger: "change" }],
warehouseIds: [{ required: true, message: this.$t("请选择目的仓库"), trigger: "change" }], warehouseIds: [{ required: true, message: this.$t("请选择目的仓库"), trigger: "change" }],
channelId: [{ required: true, message: this.$t("请选择出货渠道"), trigger: "change" }], channelId: [{ required: true, message: this.$t("请选择出货渠道"), trigger: "blur" }],
}, },
// 表单校验 // 表单校验
shopRules: { shopRules: {
...@@ -941,7 +946,7 @@ export default { ...@@ -941,7 +946,7 @@ export default {
if(!this.orderData || !this.orderData.orderItemVOList ||this.orderData.length==0){ if(!this.orderData || !this.orderData.orderItemVOList ||this.orderData.length==0){
return sums return sums
} }
var orderSum = 0 /*var orderSum = 0
var orderV = 0 var orderV = 0
var orderW = 0 var orderW = 0
var leviteSum = 0 var leviteSum = 0
...@@ -956,6 +961,17 @@ export default { ...@@ -956,6 +961,17 @@ export default {
leviteW += column.warehouseInInfoVO?column.warehouseInInfoVO.weight:0 leviteW += column.warehouseInInfoVO?column.warehouseInInfoVO.weight:0
}); });
sums[1] = this.$t('下单统计')+' '+ orderSum+' '+this.$t('箱')+' '+ orderV.toFixed(2) +' m³ ' + orderW + ' kg ' + ' '+this.$t('入仓统计:')+ leviteSum+' '+this.$t('箱')+' '+ leviteV.toFixed(2) +' m³ ' + leviteW + ' kg' sums[1] = this.$t('下单统计')+' '+ orderSum+' '+this.$t('箱')+' '+ orderV.toFixed(2) +' m³ ' + orderW + ' kg ' + ' '+this.$t('入仓统计:')+ leviteSum+' '+this.$t('箱')+' '+ leviteV.toFixed(2) +' m³ ' + leviteW + ' kg'
*/
sums[1] = [
this.$t('下单统计'),
this.orderData.costVO?.totalNum + ' '+this.$t(''),
this.orderData.costVO?.totalVolume + '',
this.orderData.costVO?.totalWeight + ' kg',
this.$t('入仓统计:'),
this.orderData.sumNum +' '+this.$t(''),
this.orderData.sumVolume +'',
this.orderData.sumWeight +' kg'
].join(' ')
return sums; return sums;
}, },
...@@ -1022,6 +1038,11 @@ export default { ...@@ -1022,6 +1038,11 @@ export default {
this.shopForm.prodTitleZh = list[0].prodTitleZh this.shopForm.prodTitleZh = list[0].prodTitleZh
},*/ },*/
haddleAdd(){ haddleAdd(){
this.$refs.formSplit.validate(valid => {
console.log({valid})
if (!valid) {
return;
}
let that = this let that = this
if(!that.form.transportId){ if(!that.form.transportId){
that.$message.error(this.$t("请选择运输方式")); that.$message.error(this.$t("请选择运输方式"));
...@@ -1045,6 +1066,7 @@ export default { ...@@ -1045,6 +1066,7 @@ export default {
that.getList() that.getList()
}) })
that.open = false that.open = false
})
}, },
/*cancel(){ /*cancel(){
this.open = false this.open = false
......
...@@ -158,17 +158,18 @@ ...@@ -158,17 +158,18 @@
</el-table-column> </el-table-column>
<el-table-column <el-table-column
prop="address" prop="address"
:label="$t('操作')" width="220"> :label="$t('操作')" width="250">
<template v-slot="{ row, column, $index }"> <template v-slot="{ row, column, $index }">
<!--没有入仓记录的不显示打包按钮 https://zentao.test.jdshangmen.com/bug-view-5389.html--> <!--没有入仓记录的不显示打包按钮 https://zentao.test.jdshangmen.com/bug-view-5389.html-->
<el-button-group v-if="orderWarehouseInList(row.orderItemId).length"> <el-button-group v-if="orderWarehouseInList(row.orderItemId).length">
<template v-if="wareItemPackStatus(row.orderItemId) == 1"> <template v-if="wareItemPackStatus(row.orderItemId) == 1">
<el-button size="mini" type="warning" @click="noNeedPack(row)">{{$t('无需打包')}}</el-button> <el-button class="pl-5 pr-5" size="mini" type="warning" @click="noNeedPack(row)">{{$t('无需打包')}}</el-button>
<el-button size="mini" type="primary" @click="package(row, $t('打包'))">{{$t('打包')}}</el-button> <el-button size="mini" type="primary" @click="package(row, $t('打包'))">{{$t('打包')}}</el-button>
</template> </template>
<el-button v-else size="mini" type="primary" @click="package(row, $t('修改打包'))">{{$t('修改打包')}}</el-button> <el-button class="pl-5 pr-5" v-else size="mini" type="primary" @click="package(row, $t('修改打包'))">{{$t('修改打包')}}</el-button>
<el-button size="mini" type="danger" @click="rollback(row)">{{$t('退仓')}}</el-button> <el-button size="mini" type="danger" @click="rollback(row)">{{$t('退仓')}}</el-button>
<el-button class="pl-5 pr-5" size="mini" type="info" @click="printTag">{{$t('打印标签')}}</el-button>
</el-button-group> </el-button-group>
</template> </template>
</el-table-column> </el-table-column>
...@@ -212,6 +213,7 @@ ...@@ -212,6 +213,7 @@
<div style="text-align: center;margin-top: 15px"> <div style="text-align: center;margin-top: 15px">
<el-button @click="escapeBol = true;" type="primary">{{$t('转异')}}</el-button> <el-button @click="escapeBol = true;" type="primary">{{$t('转异')}}</el-button>
<el-button type="primary" @click="handleSubmit">{{$t('完成备货')}}</el-button> <el-button type="primary" @click="handleSubmit">{{$t('完成备货')}}</el-button>
<el-button type="info" @click="printTag">{{$t('打印标签')}}</el-button>
</div> </div>
</el-form> </el-form>
...@@ -249,6 +251,7 @@ ...@@ -249,6 +251,7 @@
@close="onPackageClose" @close="onPackageClose"
></new-product> ></new-product>
<media-dialog v-if="curPictrues" :value="curPictrues" @close="curPictrues=null"></media-dialog> <media-dialog v-if="curPictrues" :value="curPictrues" @close="curPictrues=null"></media-dialog>
<print-tag v-if="showPrintTagDialog" :order-id="orderId" @close="showPrintTagDialog=false" :warehouse-in-num="order.sumNum" />
</div> </div>
</template> </template>
...@@ -363,7 +366,9 @@ export default { ...@@ -363,7 +366,9 @@ export default {
// 当前查看的影像 // 当前查看的影像
curPictrues: null, curPictrues: null,
// 是否显示添加新品弹窗 // 是否显示添加新品弹窗
showNewProductDialog: false showNewProductDialog: false,
// 是否显示打印标签弹层
showPrintTagDialog: false
} }
}, },
...@@ -434,10 +439,12 @@ export default { ...@@ -434,10 +439,12 @@ export default {
form.orderId = this.orderId form.orderId = this.orderId
form.manualExceptionType = form.manualExceptionType.join(',') form.manualExceptionType = form.manualExceptionType.join(',')
finishStock(form).then(res => { finishStock(form).then(res => {
return this.$alert(this.$t('操作成功')) return this.$confirm("备货成功,是否需要打印标签").catch(() => {
}).then(() => {
this.$tab.closePage() this.$tab.closePage()
}) })
}).then(() => {
this.printTag()
})
}, },
// 显示打包弹层 // 显示打包弹层
package(row, title = null){ package(row, title = null){
...@@ -496,6 +503,9 @@ export default { ...@@ -496,6 +503,9 @@ export default {
this.$message.success(this.$t('操作成功')) this.$message.success(this.$t('操作成功'))
this.getList() this.getList()
}) })
},
printTag(){
this.showPrintTagDialog = true
} }
}, },
watch: { watch: {
......
...@@ -54,7 +54,7 @@ ...@@ -54,7 +54,7 @@
/ /
<selector :disabled="index > 0" @input="syncAllUnit" v-model="item.weightUnit" :options="unitList" :label-field="$l('title')" value-field="id" defaultable2 class="w100" /> <selector :disabled="index > 0" @input="syncAllUnit" v-model="item.weightUnit" :options="unitList" :label-field="$l('title')" value-field="id" defaultable2 class="w100" />
</el-form-item> </el-form-item>
<el-form-item :label="$t('默认运费')" v-if="form.priceType != 1"> <el-form-item :label="$t('默认运费')" v-if="form.priceType != 1" :key="`transportPrice-${index}`">
<inputor default2="0" v-model.number="item.transportPrice" type="number" :placeholder="$t('整数或者两位小数')" class="w100 mr10" /> <inputor default2="0" v-model.number="item.transportPrice" type="number" :placeholder="$t('整数或者两位小数')" class="w100 mr10" />
<selector :disabled="index > 0" @input="syncAllUnit" v-model="item.transportPriceUnit" :options="currencyList" :label-field="$l('title')" value-field="id" defaultable2 class="w100" /> <selector :disabled="index > 0" @input="syncAllUnit" v-model="item.transportPriceUnit" :options="currencyList" :label-field="$l('title')" value-field="id" defaultable2 class="w100" />
/ <selector :disabled="index > 0" @input="syncAllUnit" v-model="item.transportVolumeUnit" :options="unitList" :label-field="$l('title')" value-field="id" defaultable2 class="w100" /> / <selector :disabled="index > 0" @input="syncAllUnit" v-model="item.transportVolumeUnit" :options="unitList" :label-field="$l('title')" value-field="id" defaultable2 class="w100" />
...@@ -65,7 +65,7 @@ ...@@ -65,7 +65,7 @@
/ <selector :disabled="index > 0" @input="syncAllUnit" v-model="item.clearanceVolumeUnit" :options="unitList" :label-field="$l('title')" value-field="id" defaultable2 class="w100" /> / <selector :disabled="index > 0" @input="syncAllUnit" v-model="item.clearanceVolumeUnit" :options="unitList" :label-field="$l('title')" value-field="id" defaultable2 class="w100" />
</el-form-item> </el-form-item>
<el-form-item :label="$t('默认全包价')" v-if="form.priceType == 1"> <el-form-item :label="$t('默认全包价')" v-if="form.priceType == 1" :key="`allPrice-${index}`">
<inputor default2="0" v-model.number="item.allPrice" type="number" :placeholder="$t('整数或者两位小数')" class="w100 mr10" /> <inputor default2="0" v-model.number="item.allPrice" type="number" :placeholder="$t('整数或者两位小数')" class="w100 mr10" />
<selector :disabled="index > 0" @input="syncAllUnit" v-model="item.allPriceUnit" :options="currencyList" :label-field="$l('title')" value-field="id" defaultable2 class="w100" /> <selector :disabled="index > 0" @input="syncAllUnit" v-model="item.allPriceUnit" :options="currencyList" :label-field="$l('title')" value-field="id" defaultable2 class="w100" />
/ <selector :disabled="index > 0" @input="syncAllUnit" v-model="item.allVolumeUnit" :options="unitList" :label-field="$l('title')" value-field="id" defaultable2 class="w100" /> / <selector :disabled="index > 0" @input="syncAllUnit" v-model="item.allVolumeUnit" :options="unitList" :label-field="$l('title')" value-field="id" defaultable2 class="w100" />
...@@ -278,9 +278,25 @@ export default { ...@@ -278,9 +278,25 @@ export default {
// 判断阶梯价是否设置不完整 // 判断阶梯价是否设置不完整
isStepPriceOk(){ isStepPriceOk(){
return (stepPrice) => { return (stepPrice) => {
console.log({
stepPrice,
startNum: this.isEmpty(stepPrice.startNum),
endNum:this.isEmpty(stepPrice.endNum),
allPrice: this.isEmpty(stepPrice.allPrice),
allPriceUnit: this.isEmpty(stepPrice.allPriceUnit),
allVolumeUnit: this.isEmpty(stepPrice.allVolumeUnit),
transportPrice: this.isEmpty(stepPrice.transportPrice),
transportPriceUnit: this.isEmpty(stepPrice.transportPriceUnit),
transportVolumeUnit: this.isEmpty(stepPrice.transportVolumeUnit),
priceType: this.form.priceType
})
if(this.isEmpty(stepPrice.startNum) || this.isEmpty(stepPrice.endNum)) return false if(this.isEmpty(stepPrice.startNum) || this.isEmpty(stepPrice.endNum)) return false
if(this.form.priceType == 1 && (this.isEmpty(stepPrice.allPrice) || this.isEmpty(stepPrice.allPriceUnit) || this.isEmpty(stepPrice.allVolumeUnit))) return false if(this.form.priceType == 1 && (this.isEmpty(stepPrice.allPrice) || this.isEmpty(stepPrice.allPriceUnit) || this.isEmpty(stepPrice.allVolumeUnit))){
else if(this.isEmpty(stepPrice.transportPrice) || this.isEmpty(stepPrice.transportPriceUnit)){ // 清关费可能为0或者空 console.log('全包价设置不完整')
return false
}
else if(this.form.priceType != 1 && (this.isEmpty(stepPrice.transportPrice) || this.isEmpty(stepPrice.transportPriceUnit) || this.isEmpty(stepPrice.transportVolumeUnit))){ // 清关费可能为0或者空
console.log('非全报价,未设置完整')
return false return false
} }
return true return true
...@@ -323,7 +339,7 @@ export default { ...@@ -323,7 +339,7 @@ export default {
'form.needBook'(val){ 'form.needBook'(val){
if(val) this.$set(this.form, 'dayLimit', 10000) if(val) this.$set(this.form, 'dayLimit', 10000)
else delete this.form.dayLimit else delete this.form.dayLimit
} },
}, },
async created() { async created() {
getCurrencyList().then(res => this.currencyList = res.data) getCurrencyList().then(res => this.currencyList = res.data)
......
...@@ -724,6 +724,12 @@ export default { ...@@ -724,6 +724,12 @@ export default {
console.log(this.queryParams,'this.queryParams') console.log(this.queryParams,'this.queryParams')
// 处理查询参数 // 处理查询参数
let params = {...this.queryParams}; let params = {...this.queryParams};
if(this.type == 'sea'){
params.transportType = 1
}
if(this.type == 'air'){
params.transportType = 3
}
this.addBeginAndEndTime(params, this.dateRangeCreateTime, 'createTime'); this.addBeginAndEndTime(params, this.dateRangeCreateTime, 'createTime');
// 执行查询 // 执行查询
console.log(params,'params') console.log(params,'params')
......
...@@ -102,9 +102,12 @@ ...@@ -102,9 +102,12 @@
<el-option v-for="dict in regionTypeDatas" :key="dict.value" :label="dict.label" :value="dict.value"/> <el-option v-for="dict in regionTypeDatas" :key="dict.value" :label="dict.label" :value="dict.value"/>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item :label="$t('国家代码-城市代码')" prop="labelCode" v-if="form.type == '1' || form.type == '3' "> <el-form-item :label="$t('海运订单国家代码-海运订单城市代码-空运订单国家代码-空运自编号国家代码,没有可填0-')" prop="labelCode" v-if="form.type == '1' || form.type == '3' ">
<el-input v-model="form.labelCode" placeholder="请输入国家代码-城市代码" /> <el-input v-model="form.labelCode" placeholder="请输入海运订单国家代码-海运订单城市代码-空运订单国家代码-空运自编号国家代码" />
</el-form-item> </el-form-item>
<el-tooltip effect="dark" :content="$t('海运目的国家简称-海运目的城市简称-空运订单编号目的国家简称-空运自编号目的国简称,\n注意:如果没有海运业务的城市设置,请将海运目的国家简称-海运目的城市简称设置为->0-0,前置的参数不能为空')" placement="top">
<i class="el-icon-question"></i>
</el-tooltip>
<el-form-item :label="$t('显示顺序')" prop="sort"> <el-form-item :label="$t('显示顺序')" prop="sort">
<el-input v-model="form.sort" :placeholder="$t('请输入显示顺序')" /> <el-input v-model="form.sort" :placeholder="$t('请输入显示顺序')" />
</el-form-item> </el-form-item>
......
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