Commit 5a76222e authored by houjn@hikoon.cn's avatar houjn@hikoon.cn
parents df2e7b44 d0061874
......@@ -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) {
if (data.id) {
......@@ -401,3 +410,11 @@ export function exportSettlementExcel(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) {
});
}
/**
* 创建到港订单
*
* @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) {
}
// 删除订单拆单项
export function deleteSplitItem(id) {
export function deleteSplitItem(id, shipmentSplit = false) {
return request({
url: '/order/split-item/delete?id=' + id,
url: '/order/split-item/delete?id=' + id + '&shipmentSplit=' + shipmentSplit,
method: 'delete'
})
}
......
......@@ -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) {
return request({
......
......@@ -12,39 +12,39 @@
<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>
<div v-if="showAll">
<el-checkbox :label="$t('全选') + `(${total > 500 ? $t('最多500') : $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>
<el-checkbox :label="$t('全选') + `(${$t('{total}个', {total})})`" @change="toggleAll" :disabled="isAllProduct || loading"></el-checkbox>
</div>
</div>
<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}}
<div>{{item.titleEn}}</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>
</div>
<div class="flex-1 ml-10">
<el-card style="height:100%">
<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>
</div>
<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}}
<div>{{choosed.titleEn}}</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>
</div>
</div>
</template>
<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 { getProductAttrList } from '@/api/ecw/productAttr'
......@@ -67,11 +67,10 @@ export default {
list: [],
page: 1,
pages: 1,
total: 0, // 当前筛选条件的商品总数
allTotal: 0, // 全库商品总数
queryParams: {
pageNo: 1,
pageSize: 500,
pageSize: 10000,
attrId: null,
titleZh: null,
typeId: null
......@@ -80,12 +79,21 @@ export default {
typeList: [],
attrList: [],
isAllProduct: false,
isAllFiltered: false, // 是否全部搜索结果
//isAllFiltered: false, // 是否全部搜索结果
// 是否显示搜索结果勾选,有筛选条件才显示
showFiltered: false
showFiltered: false,
// 左侧页码
leftPage: 1,
// 右侧页码
rightPage: 1,
// 页大小
pageSize: 100
}
},
computed: {
total(){
return this.list.length
},
ids: {
get() {
let arr = []
......@@ -97,6 +105,14 @@ export default {
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: {
......@@ -108,11 +124,11 @@ export default {
this.choosedList = []
this.$emit('setall', isAllProduct)
},
isAllFiltered(isAllFiltered){
/*isAllFiltered(isAllFiltered){
this.choosedList = []
this.isAllProduct = false
this.$emit('setFiltered', isAllFiltered)
},
},*/
defaultIds(newValue, oldValue){
if(!oldValue || !oldValue.length){
this.loadDefaultProds()
......@@ -122,27 +138,28 @@ export default {
this.isAllProduct = isall
}
},
created() {
async created() {
getProductTypeList().then(res => this.typeList = res.data)
getProductAttrList().then(res => this.attrList = res.data)
this.reLoad()
await this.reLoad()
this.ids = this.defaultIds //数据回显
this.isAllProduct = this.isall
// 如果有默认商品则获取内容供回显
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
})
})*/
},
methods: {
/* setAllProduct(status){
this.isAllProduct = true
}, */
loadDefaultProds(){
/*loadDefaultProds(){
if(!this.defaultIds || !this.defaultIds.length){
return false
}
......@@ -151,16 +168,24 @@ export default {
this.choose(item)
})
})
},*/
// 设置默认选中的商品
setDefaultChooseProds(){
this.list.forEach(item => {
if(this.defaultIds.indexOf(item.id) > -1){
this.choose(item)
}
})
},
toggleAll(status){
this.list.forEach(item => {
this.toggleCheck(item, status)
})
},
reLoad() {
async reLoad() {
this.queryParams.page = 1
this.list = []
this.getList()
await this.getList()
},
loadNextPage() {
if (this.page >= this.pages) {
......@@ -169,19 +194,11 @@ export default {
this.queryParams.page++
this.getList()
},
getList() {
async getList() {
this.loading = true
getProductPage(this.queryParams).then(res => {
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(() => {
let res = await getSimpleProductList(this.queryParams)
this.loading = false
})
this.list = res.data
},
// 获得指定条件的商品的全部ID
getFilteredIds(){
......
......@@ -191,7 +191,7 @@ export default {
this.$emit('input', data)
this.dialogVisible = false
if (this.isEditing || this.warehouseInId) {
if ((this.isEditing || this.warehouseInId) && this.warehouseInId) {
updateWarehouseInLocation({
"orderId": this.orderId,
"orderItemId": this.orderItemId,
......
......@@ -3832,7 +3832,7 @@
"流程详情": "Flow details",
"收款单核销审核": "The payment voucher verification review",
"系统提示": "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 restore this quote?",
"确定要删除此报价单么?": "Are you sure you want to delete this quote?",
......
......@@ -86,7 +86,7 @@
</el-table-column>
</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"/>
<!-- 对话框(添加 / 修改) -->
......@@ -158,8 +158,10 @@ export default {
dateRangeCreateTime: [],
// 查询参数
queryParams: {
pageNo: 1,
pageSize: 10,
// pageNo: 1,
// pageSize: 10,
page: 1,
rows: 10,
titleZh: null,
titleEn: null,
validateStart: null,
......
......@@ -3,7 +3,7 @@
<div class="message-title">{{$t(`您确定撤销${cancelClearInfo.orderNo}已清关状态吗?`)}}</div>
<el-form ref="arrivalForm" :rules="rules" :model="cusClearanceObj" label-width="120px">
<el-form-item :label="$t('撤销理由')" prop="clEstTime">
<el-input v-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>
{{apply.applyReason}}
</template>
......@@ -11,9 +11,9 @@
</el-form>
<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="apply.approvalStatus == 1" 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" type="primary" @click="onSubmit">{{$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="flag" plain type="primary" @click="canclAudit">{{$t('取消审核')}}</el-button>
<el-button @click="cancel">{{$t('取消')}}</el-button>
</el-row>
</div>
......@@ -41,7 +41,8 @@ export default {
{ required: true, message: this.$t("必填"), trigger: "change" },
]
},
apply: {}
apply: {},
flag: false
};
},
created() {
......@@ -50,6 +51,9 @@ export default {
console.log(order,11,this.cancelClearInfo.orderId,orders);
if(order){
this.apply = order
if(this.apply.approvalStatus == 1){
this.flag = true
}
}
},
methods: {
......
......@@ -26,7 +26,7 @@
</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">
<template v-slot="{row}">
<el-button type="text" @click="jumpOrderDetail(row)">{{row.orderNo}}</el-button>
......@@ -152,6 +152,10 @@ export default {
},
},
computed: {
orders() {
if (!this.loadDetail) return [];
return this.loadDetail.sectionOrderList?.filter(item => this.details.orderIds?.indexOf(item.orderId) > -1)
},
/* 渠道 */
getShipChannelName() {
return (shippingChannelId) => {
......
......@@ -125,7 +125,10 @@
</el-dropdown-menu>
</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">
{{$t('下载')}}<i class="el-icon-arrow-down el-icon--right"></i>
</el-button>
......@@ -234,8 +237,8 @@ export default {
cabinetList:[],
dateTypes: [
{ value: '1', label: this.$t('分拣时间') },
{ value: '2', label: this.$t('装柜时间') },
{ value: '3', label: this.$t('时间') },
{ value: '7', label: this.$t('出仓时间') },
{ value: '3', label: this.$t('时间') },
{ value: '4', label: this.$t('到港时间') },
{ value: '5', label: this.$t('清关时间') },
{ value: '6', label: this.$t('提货时间') }
......
......@@ -213,7 +213,7 @@ import {
getbox,
getboxPage,
exportboxExcel,
getNoticeList, dealCustomsSplitNotify, exportPreloadGoodsList, zipDownload,
getNoticeList, dealCustomsSplitNotify, exportSeaPreloadGoodsList, zipDownload,
} from "@/api/ecw/box";
import {
downloadFile,
......@@ -495,7 +495,7 @@ export default {
// this.$t("预装单") + `(${row.selfNo}).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;
case "downloadLoadGoodsList":
downloadFile(
......
......@@ -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">
<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-row>
</template>
......@@ -195,14 +195,14 @@ export default {
this.getBillList();
}
},
handleCommand(type, row) {
async handleCommand(type, row) {
this.handleType = type;
switch (type) {
case "previewBill":
this.getBill(row);
break;
case "makeBill":
this.makeBill(row);
await this.makeBill(row);
break;
case "queryBill":
this.getBill(row);
......@@ -236,9 +236,10 @@ export default {
this.$set(this.dialogCfg, "width", "1200px");
this.$set(this.dialogCfg, "visible", true);
},
makeBill(row) {
async makeBill(row) {
let api = this.type != 'air' ? makeBillService : makeAirBillService;
api({
let loading = this.$loading()
await api({
orderId: row.orderId,
shipmentId: this.shipmentObj.id,
}).then((res) => {
......@@ -247,8 +248,12 @@ export default {
let billContent = `${titleZh}${data.orderInfo}${contentZh}`;
this.currData = {
billContent,
orderNo: this.currRow.orderNo,
orderNo: row.orderNo,
};
}).catch(() => {
throw new Error('制作提单失败')
}).finally(() => {
loading.close()
});
},
getBill(row) {
......
......@@ -63,7 +63,7 @@ export default {
currData: Object,
currRow: Object,
dialogCfg: Object,
selfNo: String
selfNo: String,
},
data() {
return {
......
......@@ -4,7 +4,7 @@
<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="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>
</template>
......@@ -16,6 +16,7 @@ import FileSaver from "file-saver";
import html2canvas from 'html2canvas';
import { jsPDF } from "jspdf";
import {uploadFile} from '@/api/infra/file'
import {updateAirBill} from "@/api/ecw/box";
export default {
name: "previewBill",
......@@ -23,8 +24,22 @@ export default {
contentHtml: String,
currRow: Object,
type: String,
// 是否是空运
air: Boolean,
},
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() {
_BOX["downloadBillService"]({ id: this.currRow.id }).then((res) => {
if (res.data && res.data.imgUrl) {
......
......@@ -108,7 +108,7 @@
<el-table-column prop="" :label="$t('操作')" align="center" width="120px">
<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="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>
</el-table-column>
</el-table>
......
......@@ -160,7 +160,7 @@ export default {
this.$set(this.airArrivalInfo, 'arriveOrderIdList', [])
this.arrivalOrderList = this.$attrs.shipmentObj.airArrivalInfo ? this.$attrs.shipmentObj.airArrivalInfo.arrivalOrderList : []
shipmentOrderList(this.$attrs.shipmentObj.id).then((r) => {
this.orderList = r.data
this.orderList = r.data ?? []
})
},
computed: {
......@@ -243,7 +243,9 @@ export default {
this.selectOrders = []
this.selectOrders.push(val)
let arr = this.arrivalOrderList.find((item) => item.orderId == val.orderId)
console.log(arr,'arr');
if (arr) {
console.log(formatDate(arr.actSecondTime),arr.actSecondTime);
this.$set(this.airArrivalInfo, 'actSecondTime', formatDate(arr.actSecondTime))
this.$set(this.airArrivalInfo, 'estTime', formatDate(arr.estTime))
this.$set(this.airArrivalInfo, 'actTime', formatDate(arr.actTime))
......
......@@ -638,7 +638,7 @@ export default {
removeShop(id) {
let that = this;
that.$confirm(this.$t("是否移除货物吗?")).then(function () {
deleteSplitItem(id).then((res) => {
deleteSplitItem(id, true).then((res) => {
that.$message.success(that.$t("移除成功"));
that.querySplitGoods();
});
......
......@@ -118,7 +118,7 @@ import dayjs from 'dayjs'
import { clearanceCreate } from '@/api/ecw/boxSea'
import { shipmentOrderList } from '@/api/ecw/boxAir'
import { formatDateStr, serviceMsg, formatDate } from '../utils'
import { updateOrderArrival } from '@/api/ecw/boxAir'
import { createOrderArrival } from '@/api/ecw/boxAir'
/**
* 清关
......@@ -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.clearanceInfo?.clearanceOrderList != 'undefined' && this.$attrs.shipmentObj.clearanceInfo.clearanceOrderList) this.clearanceOrderList = this.$attrs.shipmentObj.clearanceInfo.clearanceOrderList
shipmentOrderList(this.$attrs.shipmentObj.id).then((r) => {
this.orderList = r.data
this.orderList = r.data ?? []
})
},
watch: {
......@@ -339,10 +339,12 @@ export default {
if (this.cusClearanceObj.clearanceType == 1) {
this.$refs['airArrivalForm'].validate((arrvalid) => {
if (arrvalid) {
updateOrderArrival({
createOrderArrival({
...this.airArrivalInfo,
shipmentId: this.$attrs.shipmentObj.id,
orderIdList: this.cusClearanceObj.clearanceOrderIdList
arriveOrderIdList: this.cusClearanceObj.clearanceOrderIdList,
arriveType: 1,
operateType: 2
}).then(() => {
clearanceCreate({
...this.cusClearanceObj,
......
......@@ -38,15 +38,19 @@
<el-row style="margin-top: 5px">
<el-table border :data="pagList" max-height="600px">
<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">
<template slot-scope="scope"> {{ scope.row.pkgLength }}*{{ scope.row.pkgWidth }}*{{ scope.row.pkgHight }} </template>
</el-table-column>
<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="sumVolume" />
<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="sumVolume" />
<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="tallyStatus">
<template slot-scope="scope">
{{ statusData[scope.row.status] }}
......@@ -118,6 +122,16 @@
<print-tag v-if="printdialogVisible" :tagData="tagData" />
</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-button :disabled="shipmentObj.approvaling" size="small" type="primary" @click="finish">{{ $t('完成') }}</el-button>
<el-button size="small" @click="$emit('closeDialog')">{{ $t('取消') }}</el-button>
......@@ -186,7 +200,10 @@ export default {
printdialogVisible: false,
tagData: {},
// 是否显示补单弹层
showPackDialog: false
showPackDialog: false,
showPagedialogVisible: false,
showPageTitle: '',
showPkgData: {}
}
},
created() {
......@@ -260,6 +277,11 @@ export default {
this.pkgPageTitle = this.$t('合包箱号: ') + row.pkgNum
this.pkgData = row
},
showPageOrder(row) {
this.showPagedialogVisible = true
this.showPageTitle = this.$t('合包箱号: ') + row.pkgNum
this.showPkgData = row
},
printTag(id) {
getMergeTagById(id).then(res=>{
this.tagData = res.data
......
<template>
<div>
<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="sealBox">{{ $t('封箱') }}</el-button>
</el-row>
......@@ -137,6 +137,10 @@ export default {
props: {
pkgData: Object,
shipmentObj: Object,
flag: {
type: String,
default: 'edit'
}
},
components: {
printTag
......
......@@ -18,7 +18,7 @@
</div>
<el-collapse-transition>
<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.prodTitleZh}}</p>
<div>
......@@ -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 {
......
......@@ -137,12 +137,12 @@ export default {
if(!this.shipmentObj.ladingBillInfo){
this.$set(this.subMaterialObj,'agentId',this.shipmentObj.agentInfo?.agentId||undefined)
this.$set(this.subMaterialObj,'soNo',this.shipmentObj.bookSeaInfo?.sono||undefined)
this.$set(this.subMaterialObj,'blMblNo',this.shipmentObj.bookSeaInfo?.sono||undefined)
this.$set(this.subMaterialObj,'soNo',this.shipmentObj.bookAirInfo?.sono||undefined)
this.$set(this.subMaterialObj,'blMblNo',this.shipmentObj.bookAirInfo?.blNo||undefined)
this.$set(this.subMaterialObj,'markNo',"N/M")
this.$set(this.subMaterialObj,'startPortId',this.shipmentObj.bookSeaInfo?.bigPortId||undefined)
this.$set(this.subMaterialObj,'shipCompanyId',Number(this.shipmentObj.bookSeaInfo?.shipCompanyType)||undefined)
this.$set(this.subMaterialObj,'destPortId',this.shipmentObj.bookSeaInfo?.destPortId||undefined)
this.$set(this.subMaterialObj,'startPortId',this.shipmentObj.bookAirInfo?.bigPortId||undefined)
this.$set(this.subMaterialObj,'shipCompanyId',Number(this.shipmentObj.bookAirInfo?.shipCompanyType)||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,'containerSealNo',(this.shipmentObj.trailerInfo?.tlContainerNo||'')+'/'+(this.shipmentObj.trailerInfo?.tlStripSeal||'/'))
this.subMaterialObj.containerSealNo = this.subMaterialObj.containerSealNo.replace('//','')
......
......@@ -305,6 +305,16 @@ export default {
},
/** 提交 */
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){
approvalCreate({
shipmentId: this.$attrs.shipmentObj.id,
......
......@@ -150,7 +150,7 @@ export default {
}
}
console.log(currIndex,this.currIndex)
if (currIndex > this.currIndex) {
if (currIndex > this.currIndex && !['cusClearance', 'unloading'].includes(node.type)) {
this.$message.error(this.errorMsg);
return;
}
......@@ -186,10 +186,6 @@ export default {
break;
// 清关
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");
break;
// AGENT
......@@ -224,10 +220,6 @@ export default {
break;
// 卸柜
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];
if ([186].includes(unStatus)) {
......@@ -277,10 +269,6 @@ export default {
if (start.includes(val[keyName]) && val[voName]) {
node.currStatus = "wait";
if(type === "arrival" || type === "cusClearance"){
++nodeIndex;
continue;
}
}
if (wait.includes(val[keyName])) {
......
......@@ -860,8 +860,8 @@ export default {
},
removeShop(id) {
let that = this;
that.$confirm(this.$t("是否移除货物吗?")).then(function () {
deleteSplitItem(id).then((res) => {
that.$confirm(this.$t("确定移除货物吗?")).then(function () {
deleteSplitItem(id, true).then((res) => {
that.$message.success(that.$t("移除成功"));
that.querySplitGoods();
});
......
......@@ -17,7 +17,7 @@
</div>
<el-collapse-transition>
<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.prodTitleZh}}</p>
<div>
......@@ -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 {
......
......@@ -49,12 +49,12 @@
</el-select>
</el-form-item>
<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-select>
</el-form-item>
<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-select>
</el-form-item>
......@@ -294,8 +294,13 @@
/** 查询列表 */
getList() {
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.total = response.data.myAchievementDtos.total;
this.myAchievementData = response.data
......
......@@ -93,6 +93,11 @@
</template>
</el-table-column>
</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>
</template>
<script>
......
......@@ -60,7 +60,7 @@
</td>
</tr>
</template>
<tr>
<tr style="border-top:2px solid #000">
<td style="text-align:center;width: 50px;" v-if="!preview">
</td>
......@@ -68,7 +68,7 @@
</td>
<td style="text-align:center;padding:0 0px;border:1px dashed #ccc;">
合计
</td>
<td style="text-align:center;padding:0 0px;border:1px dashed #ccc;">
{{calcTotal('cartonsNum')}}
......
......@@ -88,8 +88,7 @@
</template>
<template v-else>
{{$t('全包价')}}<el-input v-model="scope.row.oneSeaFreight" @change="updateField(scope.row, 'oneSeaFreight')" size="mini" style="width: 80px"></el-input>
{{currencyMap[scope.row.currencyId]}}
{{unitMap[scope.row.clearanceFreightVolume]}}
{{currencyMap[scope.row.seaFreightCurrency]}} / {{unitMap[scope.row.seaFreightVolume]}}
</template>
</template>
</el-table-column>
......
......@@ -58,6 +58,11 @@
</image-display>
</template>
</el-table-column>
<el-table-column :label="$t('备注')" prop="remark" >
<template slot-scope="{row}">
{{row.remark}}
</template>
</el-table-column>
</el-table>
</el-dialog>
</template>
......
......@@ -192,6 +192,12 @@
<el-descriptions-item :label="$t('特殊要求备注')">
{{order.packageRemarks}}
</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-card>
<el-card class="card">
......
......@@ -223,7 +223,7 @@
{{$t('件数')}} <span class="red">*</span>
</template>
<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>
</el-table-column>
<el-table-column :label="$t('包装单位')" width="100px">
......@@ -236,7 +236,7 @@
</el-table-column>
<el-table-column :label="`${$t('数量')}(${$t('个')})`" width="120px">
<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>
</el-table-column>
<el-table-column :label="$t('总体积') + '(m³)'" width="120px">
......@@ -248,7 +248,7 @@
]"
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>
</template>
</el-table-column>
......@@ -261,7 +261,7 @@
]"
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>
</template>
</el-table-column>
......@@ -279,7 +279,7 @@
class="mb-0 mr-0"
>
<!--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>
</template>
</el-table-column>
......@@ -1075,12 +1075,7 @@ export default {
this.updateChannel = this.$route.query.updateChannel == 1
},
async created() {
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)
// 初始化自定义付款人需要在前面,否则先执行activated里的getOrder,会被覆盖
this.getDictDatas(this.DICT_TYPE.ECW_CUSTOM_DRAWEE).forEach(item => {
this.customDraweeList.push({
label: item.label, // 显示文字
......@@ -1088,6 +1083,14 @@ export default {
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){
this.$set(this.form, 'transportId', +this.$route.query.transportType)
}
......@@ -1110,11 +1113,12 @@ export default {
onTableMounted(e){
// console.warn('onTableMounted', e)
},
getOrder(){
async getOrder(){
if(this.form.orderId == this.$route.query.id){
console.log('加载中或者已加载此订单数据,不重复加载', this.initing, this.form.orderId, this.$route.query.id)
return
}
this.$nextTick()
this.initing = true
getUpdateInfo(this.$route.query.id).then(res => {
this.form = Object.assign({}, {...res.data}, {orderItemVOList: []})
......@@ -1168,9 +1172,12 @@ export default {
// 如果是自定义付款人,则需要同步具体发货人信息
if(this.form.drawee == 3){
console.log('同步自定义付款人信息', JSON.stringify(this.customDraweeList))
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
})
console.log('同步自定义付款人信息', this.customDraweeList, this.form.customDraweeVOList)
}
// 如果已完成入仓,则需要监听必填内容,发生更改后需要填写审批表单
......
......@@ -202,15 +202,15 @@
<el-table-column :label="$t('体积/重量')" align="center">
<template slot-scope="scope">
<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>
</div>
<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>
</el-tooltip>
<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>
</el-tooltip>
</template>
......@@ -226,10 +226,10 @@
<dict-tag :type="DICT_TYPE.INFRA_BOOLEAN_STRING" :value="scope.row.isCargoControl" />
</template>
</el-table-column>
<el-table-column :label="$t('订单状态')" align="center" prop="orderExceptionAmount" >
<template slot-scope="scope">
<el-table-column :label="$t('订单状态')" align="center" prop="statusMsg" >
<!-- <template slot-scope="scope">
<dict-tag :type="DICT_TYPE.ORDER_STATUS" :value="scope.row.orderStatus" />
</template>
</template> -->
</el-table-column>
<el-table-column :label="$t('异常状态')" align="center">
<template slot-scope="scope">
......
......@@ -172,7 +172,7 @@
</el-col>
<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>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
......@@ -396,7 +396,8 @@
'ecw:order:warehouse_exit',
'ecw:order:warehouse_adjustment',
'ecw:order:warehouse_transfer',
'ecw:order:warehouse_arrive'
'ecw:order:warehouse_arrive',
'ecw:order:stocking'
]">
<el-button type="text">{{$t('仓库')}}</el-button>
<el-dropdown-menu slot="dropdown">
......
......@@ -1197,12 +1197,6 @@
that.loading = true;
getExceptionById(that.orderExceptionId).then(response => {
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.orderId = response.data.orderId
that.getOrderData()
......@@ -1272,7 +1266,7 @@
if(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.getOpenedRouterList()
if(this.orderExceptionData.orderExceptionStatus==0){
......@@ -1286,10 +1280,11 @@
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'){
this.getExceptionPriceList('continue_channel',1)
}
......@@ -1311,6 +1306,7 @@
getOrderExcptionResult(){
getOrderExcptionResult({orderExceptionId:this.orderExceptionId}).then(res=>{
this.handlerParams = Object.assign(this.handlerParams,res.data.list[0])
if(!this.orderExceptionData.handlerTime){
this.orderExceptionData.handlerTime = this.handlerParams.handlerTime
}
......@@ -1654,6 +1650,7 @@
}
}
})
console.log(that.loopOrderItem)
}else{
getOrderExceptionChannelPriceList({orderId:that.orderId,exceptionId:parseInt(that.orderExceptionId),exceptionResultId:that.handlerParams.id}).then(res=>{
if(res.code==0){
......
......@@ -215,20 +215,25 @@
<template slot-scope="scope">
<template v-if="scope.row.charging != 1">
<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>
{{currencyMap[scope.row.seaFreightCurrency]}} / {{unitMap[scope.row.seaFreightVolume]}}
</template>
<template v-else>{{$t('未报价')}}</template>
</div>
<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>
{{currencyMap[scope.row.clearanceFreightCurrency]}} / {{unitMap[scope.row.clearanceFreightVolume]}}
</template>
<template v-else>{{$t('未报价')}}</template>
</div>
</template>
<template v-else>
{{$t('全包价')}}<el-input v-model="scope.row.oneSeaFreight" @change="updateField(scope.row, 'oneSeaFreight')" size="mini" style="width: 80px"></el-input>
{{currencyMap[scope.row.currencyId]}}
{{unitMap[scope.row.clearanceFreightVolume]}}
{{currencyMap[scope.row.seaFreightCurrency]}} / {{unitMap[scope.row.seaFreightVolume]}}
</template>
</template>
</el-table-column>
......@@ -261,7 +266,7 @@
<el-form-item :label="$t('运输方式')">
<dict-selector :clearable="true" :type="DICT_TYPE.ECW_TRANSPORT_TYPE" @change="changeTransport" v-model="form.transportId" />
</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-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>
......@@ -569,7 +574,7 @@ export default {
rules: {
transportId: [{ 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: {
......@@ -941,7 +946,7 @@ export default {
if(!this.orderData || !this.orderData.orderItemVOList ||this.orderData.length==0){
return sums
}
var orderSum = 0
/*var orderSum = 0
var orderV = 0
var orderW = 0
var leviteSum = 0
......@@ -956,6 +961,17 @@ export default {
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('下单统计'),
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;
},
......@@ -1022,6 +1038,11 @@ export default {
this.shopForm.prodTitleZh = list[0].prodTitleZh
},*/
haddleAdd(){
this.$refs.formSplit.validate(valid => {
console.log({valid})
if (!valid) {
return;
}
let that = this
if(!that.form.transportId){
that.$message.error(this.$t("请选择运输方式"));
......@@ -1045,6 +1066,7 @@ export default {
that.getList()
})
that.open = false
})
},
/*cancel(){
this.open = false
......
......@@ -158,17 +158,18 @@
</el-table-column>
<el-table-column
prop="address"
:label="$t('操作')" width="220">
:label="$t('操作')" width="250">
<template v-slot="{ row, column, $index }">
<!--没有入仓记录的不显示打包按钮 https://zentao.test.jdshangmen.com/bug-view-5389.html-->
<el-button-group v-if="orderWarehouseInList(row.orderItemId).length">
<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>
</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 class="pl-5 pr-5" size="mini" type="info" @click="printTag">{{$t('打印标签')}}</el-button>
</el-button-group>
</template>
</el-table-column>
......@@ -212,6 +213,7 @@
<div style="text-align: center;margin-top: 15px">
<el-button @click="escapeBol = true;" type="primary">{{$t('转异')}}</el-button>
<el-button type="primary" @click="handleSubmit">{{$t('完成备货')}}</el-button>
<el-button type="info" @click="printTag">{{$t('打印标签')}}</el-button>
</div>
</el-form>
......@@ -249,6 +251,7 @@
@close="onPackageClose"
></new-product>
<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>
</template>
......@@ -363,7 +366,9 @@ export default {
// 当前查看的影像
curPictrues: null,
// 是否显示添加新品弹窗
showNewProductDialog: false
showNewProductDialog: false,
// 是否显示打印标签弹层
showPrintTagDialog: false
}
},
......@@ -434,10 +439,12 @@ export default {
form.orderId = this.orderId
form.manualExceptionType = form.manualExceptionType.join(',')
finishStock(form).then(res => {
return this.$alert(this.$t('操作成功'))
}).then(() => {
return this.$confirm("备货成功,是否需要打印标签").catch(() => {
this.$tab.closePage()
})
}).then(() => {
this.printTag()
})
},
// 显示打包弹层
package(row, title = null){
......@@ -496,6 +503,9 @@ export default {
this.$message.success(this.$t('操作成功'))
this.getList()
})
},
printTag(){
this.showPrintTagDialog = true
}
},
watch: {
......
......@@ -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" />
</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" />
<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" />
......@@ -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" />
</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" />
<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" />
......@@ -278,9 +278,25 @@ export default {
// 判断阶梯价是否设置不完整
isStepPriceOk(){
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.form.priceType == 1 && (this.isEmpty(stepPrice.allPrice) || this.isEmpty(stepPrice.allPriceUnit) || this.isEmpty(stepPrice.allVolumeUnit))) return false
else if(this.isEmpty(stepPrice.transportPrice) || this.isEmpty(stepPrice.transportPriceUnit)){ // 清关费可能为0或者空
if(this.form.priceType == 1 && (this.isEmpty(stepPrice.allPrice) || this.isEmpty(stepPrice.allPriceUnit) || this.isEmpty(stepPrice.allVolumeUnit))){
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 true
......@@ -323,7 +339,7 @@ export default {
'form.needBook'(val){
if(val) this.$set(this.form, 'dayLimit', 10000)
else delete this.form.dayLimit
}
},
},
async created() {
getCurrencyList().then(res => this.currencyList = res.data)
......
......@@ -724,6 +724,12 @@ export default {
console.log(this.queryParams,'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');
// 执行查询
console.log(params,'params')
......
......@@ -102,9 +102,12 @@
<el-option v-for="dict in regionTypeDatas" :key="dict.value" :label="dict.label" :value="dict.value"/>
</el-select>
</el-form-item>
<el-form-item :label="$t('国家代码-城市代码')" prop="labelCode" v-if="form.type == '1' || form.type == '3' ">
<el-input v-model="form.labelCode" placeholder="请输入国家代码-城市代码" />
<el-form-item :label="$t('海运订单国家代码-海运订单城市代码-空运订单国家代码-空运自编号国家代码,没有可填0-')" prop="labelCode" v-if="form.type == '1' || form.type == '3' ">
<el-input v-model="form.labelCode" placeholder="请输入海运订单国家代码-海运订单城市代码-空运订单国家代码-空运自编号国家代码" />
</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-input v-model="form.sort" :placeholder="$t('请输入显示顺序')" />
</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