Commit 7d58a160 authored by 邓春圆's avatar 邓春圆

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

parents 6d9f91d1 4b2e75a1
......@@ -343,3 +343,10 @@ export function updateUrl(data) {
data,
});
}
export function dealCustomsSplitNotify(notifyId){
return request({
url: `/shipment/box/dealCustomsSplitNotify?notifyId=${notifyId}`,
method: "get",
})
}
......@@ -515,6 +515,19 @@ export function warehousePictureList(data){
data
})
}
export function warehousePictureCreate(data){
return request({
url: '/order/warehouse-picture/create',
method: 'post',
data
})
}
export function warehousePictureDelete(id){
return request({
url: '/order/warehouse-picture/delete?id=' + id,
method: 'delete'
})
}
// 获得部门订单分页
export function deptOrderPage(params){
......
......@@ -45,6 +45,7 @@
<script>
import { getToken } from "@/utils/auth";
import {warehousePictureCreate} from "@/api/ecw/order";
export default {
props: {
......@@ -63,6 +64,15 @@ export default {
isShowTip: {
type: Boolean,
default: true
},
// 类型 1入仓 2 调拨出仓 3调拨到仓 4 订单转异
type: {
type: Number,
default: undefined
},
id: {
type: Number,
default: undefined
}
},
data() {
......@@ -116,9 +126,9 @@ export default {
methods: {
// 删除图片
handleRemove(index) {
this.fileList.splice(index, 1);
this.$emit("input", this.listToString(this.fileList));
this.fileList.splice(index, 1);
this.$emit("input", this.listToString(this.fileList));
this.$emit("delete", index);
},
// 上传成功回调
handleUploadSuccess(res) {
......@@ -128,8 +138,15 @@ export default {
this.fileList = this.fileList.concat(this.uploadList);
this.uploadList = [];
this.number = 0;
this.$emit("input", this.listToString(this.fileList));
this.$modal.closeLoading();
warehousePictureCreate({
"bizId": this.id,
"type": this.type,
"url": res.data
}).then(() => {
this.$emit("input", this.listToString(this.fileList));
this.$emit("refresh");
this.$modal.closeLoading();
})
}
}else {
this.handleUploadError();
......
......@@ -288,7 +288,10 @@ export default {
},
// 用于储位回显选中
isSelected(warehouse, area, position = 0){
return !!this.value.find(e => warehouse === e.wareId && area === e.areaId && (position === e.locationId || undefined === e.locationId))
return !!this.value.find(e => {
// 最后一个条件不能用!e.locationId来判断,会导致选择了没有locationId的全部被选中,上次改这里忘记什么原因了,下次复现再来调整
return warehouse === e.wareId && area === e.areaId && (position === e.locationId || e.locationId == undefined)
})
},
}
}
......
......@@ -198,7 +198,7 @@ import {
getbox,
getboxPage,
exportboxExcel,
getNoticeList,
getNoticeList, dealCustomsSplitNotify,
} from "@/api/ecw/box";
import {
downloadFile,
......@@ -426,7 +426,7 @@ export default {
}
},
/** 查看按钮操作 */
handleCommand(row, command) {
async handleCommand(row, command) {
this.$set(this.dialogCfg, "fullscreen", false);
switch (command) {
......@@ -513,6 +513,9 @@ export default {
if ([5, 6, 7].includes(noticeType)) {
this.$router.push("/boxSea/query/" + row.id);
}
if([9].includes(noticeType)){
await dealCustomsSplitNotify(row.notifyId)
}
this.closeDialog();
break;
}
......
......@@ -828,8 +828,8 @@ export default {
remarks: this.shopForm.remarks,
volume: this.putin.volume,
weight: this.putin.weight,
chargeWeight: this.putin.chargeWeight,
chargeVolume: this.putin.chargeVolume,
chargeWeight: this.shopForm.chargeWeight,
chargeVolume: this.shopForm.chargeVolume,
worth: this.shopForm.worth || 0,
specsRecordVOList:this.shopForm.specsRecordVOList,
shipmentSplit: true
......@@ -899,6 +899,7 @@ export default {
deleteRow(index){
const spliceIndex = typeof index !== 'number' ? this.shopForm.specsRecordVOList.length - 1 : index
this.shopForm.specsRecordVOList.splice(spliceIndex, 1)
this.calcDefaultData()
},
// 计算体积
calcVolume(row){
......@@ -947,18 +948,32 @@ export default {
})
this.currentPutIn = null
// 根据比例计算默认的收费方数和收费重量
const orderItem = this.orderData.orderItemVOList.find(item => item.orderItemId == this.shopForm.orderItemId)
const rate = this.putin.num / orderItem.warehouseInInfoVO.cartonsNum
this.$set(this.shopForm, 'chargeVolume', (orderItem.chargeVolume*rate).toFixed(2))
this.$set(this.shopForm, 'chargeWeight', (orderItem.chargeWeight*rate).toFixed(2))
this.$set(this.shopForm, 'worth', (orderItem.worth*rate).toFixed(2))
this.calcDefaultData()
},
// 清空放入记录
clearAll(){
this.$confirm(this.$t("确定要清空放入数据么?")).then(res => {
this.shopForm.specsRecordVOList = []
this.calcDefaultData()
})
},
// 计算默认的收费数据
calcDefaultData() {
// 根据比例计算默认的收费方数和收费重量
const orderItem = this.orderData.orderItemVOList.find(item => item.orderItemId == this.shopForm.orderItemId)
const rate = this.putin.num / orderItem.warehouseInInfoVO.cartonsNum
/*
* 1 普货 2 重货 3 泡货
* 普货 收费数据=入仓数据
* 泡货 收费方数=入仓方数 收费重量 = 品名收费重量*比例
* 重货 收费方数=品名收费方数*比例 收费重量 = 入仓重量
* */
const chargeVolume = orderItem.itemType === 2 ? (orderItem.chargeVolume*rate).toFixed(2) : this.putin.volume
const chargeWeight = orderItem.itemType === 3 ? (orderItem.chargeWeight*rate).toFixed(2) : this.putin.weight
this.$set(this.shopForm, 'chargeVolume', chargeVolume)
this.$set(this.shopForm, 'chargeWeight', chargeWeight)
this.$set(this.shopForm, 'worth', (orderItem.worth*rate).toFixed(2))
}
},
};
......
......@@ -335,17 +335,25 @@ export default {
if (res.code === 566) {
this.$confirm(res.msg+this.$t('是否需要一起预装?'), this.$t("提示"), {
dangerouslyUseHTMLString: true,
type: "warning",
distinguishCancelAndClose: true,
confirmButtonText: '预装关联单',
cancelButtonText: '仅当前订单'
})
.then((_) => {
createGoods({ ...params, relationStatus: 2 }).then((res) => {
createGoods({ ...params, relationStatus: 2, singleLoad: false }).then((res) => {
serviceMsg(res, this).then(() => {
this.queryAllData();
});
});
})
.catch((_) => {
this.queryAllData();
.catch((action) => {
if(action =='cancel'){
createGoods({ ...params, relationStatus: 2, singleLoad: true }).then((res) => {
serviceMsg(res, this).then(() => {
this.queryAllData();
});
});
}
});
}
});
......
......@@ -264,6 +264,7 @@ export default {
},
methods: {
getCustomsOrderList(dcCustomsType) {
if(!dcCustomsType) dcCustomsType = '1'
customsOrderList({
shipmentId: this.shipmentObj.id,
customsTypes: dcCustomsType === "3" ? "2,3" : dcCustomsType,
......@@ -547,6 +548,7 @@ export default {
},
watch: {
"cusDeclarationObj.dcCustomsType"(val) {
console.log(val,'val')
this.getCustomsOrderList(val);
},
"cusDeclarationObj.documentInfo"(val) {
......
......@@ -699,7 +699,7 @@ export default {
type: "warning",
})
.then((_) => {
createGoods({ ...params, relationStatus: 1 }).then((res) => {
createGoods({ ...params, relationStatus: 1, singleLoad: true }).then((res) => {
serviceMsg(res, this).then(() => {
this.queryAllData();
});
......@@ -713,17 +713,25 @@ export default {
if (res.code === 566) {
this.$confirm(res.msg+this.$t('是否需要一起预装?'), this.$t("提示"), {
dangerouslyUseHTMLString: true,
type: "warning",
distinguishCancelAndClose: true,
confirmButtonText: '预装关联单',
cancelButtonText: '仅当前订单'
})
.then((_) => {
createGoods({ ...params, relationStatus: 2 }).then((res) => {
createGoods({ ...params, relationStatus: 2, singleLoad: false }).then((res) => {
serviceMsg(res, this).then(() => {
this.queryAllData();
});
});
})
.catch((_) => {
this.queryAllData();
.catch((action) => {
if(action =='cancel'){
createGoods({ ...params, relationStatus: 2, singleLoad: true }).then((res) => {
serviceMsg(res, this).then(() => {
this.queryAllData();
});
});
}
});
}
});
......
......@@ -178,7 +178,7 @@ export default {
list.push({
...oItem,
warehouseInInfo,
multiSpecification: item.multiSpecification,
multiSpecification: oItem.multiSpecification,
positionNo: oItem.positionNo,
tallyStatus: item.tallyStatus,
tallyTime: item.tallyTime,
......
......@@ -77,7 +77,8 @@ import lodop from '@/utils/lodop'
export default {
filters: {parseTime},
props:{
orderId: [String, Number]
orderId: [String, Number],
warehouseInNum: Number
},
data(){
return {
......@@ -116,7 +117,9 @@ export default {
loadData(){
printTag(this.orderId).then(res => {
this.$set(this, 'tags', res.data)
this.form.start = res.data[0].num
// this.form.start = res.data[0].num
// 起始标签为入仓数 + 1
this.form.start = this.warehouseInNum + 1
this.form.end = res.data[res.data.length-1].num
})
},
......@@ -126,9 +129,10 @@ export default {
this.$emit('close');
},
showPreview(){
/* 2023-07-17 要求不限制范围
if(this.form.end > this.tags[this.tags.length-1].num){
return this.$message.error(this.$t('结束标签不对'))
}
}*/
if(!this.printTags.length){
return this.$message.error(this.$t('指定区域无可打印标签'))
}
......
......@@ -199,7 +199,7 @@
<dict-selector v-model="row.unit" :type="DICT_TYPE.ECW_PACKAGING_TYPE" defaultable :disabled="!canAddProduct || !productEditable" />
</template>
</el-table-column>
<el-table-column :label="$t('数量') + '(个)'" width="120px">
<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" />
</template>
......@@ -382,7 +382,7 @@
<dict-selector :type="DICT_TYPE.ECW_HARVEST_METHOD" v-model="form.harvestMethod" :filter="item => item.value == 1 || homeDeliveryService" defaultable :disabled="false" />
</el-form-item>
</div>
<div v-if="homeDeliveryService && form.harvestMethod == 2">
<div v-if="homeDeliveryService && +form.harvestMethod === 2">
<el-form-item :label="$t('收货地区')" prop="country">
<area-selector
:country="form.consigneeVO ? form.consigneeVO.country : undefined"
......@@ -562,7 +562,8 @@ let makeDefaultFormData = () => {
isExternalWarehouse: false,
externalWarehouseDtoList:[],
orderItemVOList:[],
drawee: 2
drawee: 2,
harvestMethod: "1"
}
}
window.Decimal = Decimal
......
......@@ -430,7 +430,7 @@
exclude(scope.row.status, [0]) &&
exclude(scope.row.abnormalState, [5,6,7,8])
">
<el-dropdown-item @click.native="printTagOrderId=scope.row.orderId" v-hasPermi="['ecw:order:print_tag']">{{$t('打印标签')}}</el-dropdown-item>
<el-dropdown-item @click.native="printTag(scope.row)" v-hasPermi="['ecw:order:print_tag']">{{$t('打印标签')}}</el-dropdown-item>
</template>
<!-- 打印入仓单 -->
......@@ -456,7 +456,7 @@
@pagination="getList" />
<special-needs :orderNo="orderNo" :show.sync="isShow" :currency="JSON.stringify(currencyList)" :order-id="orderId" @determine="getList" ></special-needs>
<print-tag v-if="printTagOrderId !== null" :order-id="printTagOrderId" @close="printTagOrderId=null" />
<print-tag v-if="printTagOrderId !== null" :order-id="printTagOrderId" @close="printTagOrderId=null" :warehouse-in-num="printTagWarehouseInNum" />
<print-warehouse-receipt v-if="printWarehouseReceiptOrderId !== null" :order-id="printWarehouseReceiptOrderId" @close="printWarehouseReceiptOrderId=null" />
<print-lading-bill v-if="printLadingBillOrderId !== null" :order-id="printLadingBillOrderId" @close="printLadingBillOrderId=null" />
<batch-pickup v-if="showBatchPickup" @close="onBatchClose" @success="onBatchClose"/>
......@@ -567,6 +567,7 @@ export default {
dateFilter: [], //筛选日期
printTagOrderId: null, // 显示打印标签的订单ID
printTagWarehouseInNum: 0, // 打印标签的订单入仓箱数
printWarehouseReceiptOrderId: null, // 打印入仓单的订单ID
printLadingBillOrderId: null, // 打印提单的订单ID
showBatchPickup: false, // 是否显示批量提货弹窗
......@@ -881,6 +882,11 @@ export default {
onBatchClose(){
this.showBatchPickup = false
this.handleQuery()
},
// 打印标签
printTag(order){
this.printTagOrderId=order.orderId
this.printTagWarehouseInNum = order.sumNum
}
}
};
......
......@@ -94,7 +94,8 @@
</template>
<template v-slot="{row,$index}">
<el-form-item label-width="0">
<el-input-number controls-position="right" :min="0" class="w-100 tight" v-model="row.boxGauge1" @blur="calcVolume(row)"/>
<input class="input" v-model="row.boxGauge1" type="number" @keyup="calcVolume(row)" @change="calcVolume(row)" :min="0"></input>
<!--<el-input-number controls-position="right" :min="0" class="w-100 tight" v-model="row.boxGauge1" @blur="calcVolume(row)"/>-->
</el-form-item>
</template>
</el-table-column>
......@@ -104,7 +105,8 @@
</template>
<template v-slot="{row,$index}">
<el-form-item label-width="0">
<el-input-number controls-position="right" :min="0" class="w-100 tight" v-model="row.boxGauge2" @blur="calcVolume(row)" />
<input class="input" v-model="row.boxGauge2" type="number" @keyup="calcVolume(row)" @change="calcVolume(row)" :min="0"></input>
<!--<el-input-number controls-position="right" :min="0" class="w-100 tight" v-model="row.boxGauge2" @blur="calcVolume(row)" />-->
</el-form-item>
</template>
</el-table-column>
......@@ -114,7 +116,8 @@
</template>
<template v-slot="{row,$index}">
<el-form-item label-width="0">
<el-input-number controls-position="right" :min="0" class="w-100 tight" v-model="row.boxGauge3" @blur="calcVolume(row)"/>
<input class="input" v-model="row.boxGauge3" type="number" @keyup="calcVolume(row)" @change="calcVolume(row)" :min="0"></input>
<!--<el-input-number controls-position="right" :min="0" class="w-100 tight" v-model="row.boxGauge3" @blur="calcVolume(row)"/>-->
</el-form-item>
</template>
</el-table-column>
......@@ -338,12 +341,15 @@ export default {
},
// 计算体积
calcVolume(row){
// 改了规格后按照规格计算体积
this.$set(row, 'calcVolumeByBoxGauge', 1)
let volume = Decimal(row.boxGauge1 || 0)
.times(Decimal(row.boxGauge2 || 0))
.times(Decimal(row.boxGauge3 || 0)).div(1000000)
// 如果是箱的单位要乘以箱数
if(row.specificationType === 1) {
row.volume = volume.times(Decimal(row.num || 0))
if(+row.specificationType === 1) {
volume = volume.times(Decimal(row.num || 0))
}
// 最低0.01
......@@ -355,16 +361,22 @@ export default {
if(!locationArr || !locationArr.length) return ''
let arr = []
locationArr.forEach(item => {
arr.push(`${item.areaName}${item.locationName || ''}`)
arr.push(`${item.areaName || ''}${item.locationName || ''}`)
})
return Array.from(new Set(arr)).join(",")
},
// 根据箱数计算体积,重量,数量
calc(row){
const rate = row.num / this.warehouseRecord.cartonsNum
row.volume = (this.warehouseRecord.volume * rate).toFixed(2)
row.weight = (this.warehouseRecord.weight * rate).toFixed(2)
row.quantity = (this.warehouseRecord.quantityAll * rate).toFixed(0)
// 如果是按照规格计算体积,则重新计算
if(row.calcVolumeByBoxGauge){
this.calcVolume(row)
}
},
closeDialog(){
this.show = false
......@@ -385,6 +397,9 @@ export default {
if(this.splitTotal('weight') > this.leftData('weight')){
return this.$message.error("拆出重量不能大于剩余重量")
}
if(this.splitTotal('quantity') > this.leftData('quantity')){
return this.$message.error("拆出数量不能大于剩余数量")
}
// 如果全拆(拆出箱数 == 原入仓箱数),则体积重量也需要全拆
if(this.splitTotal('num') === this.warehouseRecord.cartonsNum){
if(this.splitTotal('volume') !== this.warehouseRecord.volume){
......
......@@ -32,10 +32,10 @@
<el-table-column :label="$t('体积') + '(m³)'" prop="volume" />
<el-table-column :label="$t('重量') + '(kg)'" prop="weight" />
<el-table-column :label="$t('数量(个)')" prop="quantity" />
<!--<el-table-column :label="$t('入仓快递单号')" prop="expressNo" />-->
<!--<el-table-column :label="$t('首次入仓时间')" prop="inTime" >
<el-table-column :label="$t('入仓快递单号')" prop="expressNo" />
<el-table-column :label="$t('首次入仓时间')" prop="inTime" >
<template slot-scope="{row}">{{row.inTime|parseTime}}</template>
</el-table-column>-->
</el-table-column>
<el-table-column :label="$t('储位')" prop="orderLocationBackVOList" >
<template slot-scope="{row}">
<!--{{getLocationName(row.orderLocationList)}}-->
......@@ -52,10 +52,12 @@
<script>
import WarehouseAreaSelect from "@/components/WarehouseAreaSelect/index.vue";
import {parseTime} from "@/utils/ruoyi";
export default {
name: "WarehouseRecord",
components: {WarehouseAreaSelect},
filters: {parseTime},
props:{
list:{
type: Array,
......@@ -73,6 +75,7 @@ export default {
this.show = true
},
methods:{
parseTime,
// 获取储位名称
getLocationName(locationArr){
if(!locationArr || !locationArr.length) return ''
......
This diff is collapsed.
......@@ -164,7 +164,15 @@
<span style="font-size: 18px">{{$t('入仓影像')}}</span>
</div>
<div>
<image-and-video-upload :fileSize="50" :isShowTip="true" v-model="form.urls" ></image-and-video-upload>
<image-and-video-upload
:fileSize="50"
:isShowTip="true"
v-model="form.urls"
:type="1"
:id="orderId"
@delete="handleDeleteImage"
@refresh="getWarehousePictureList"
></image-and-video-upload>
</div>
</el-card>
<div style="text-align: center;margin-top: 15px" v-if="!(order.status !== 3 && isEdit)">
......@@ -222,7 +230,7 @@ import {
getOrderWarehouseIn,
getSpecialListByOrderId, listByOrderId,
orderWarehouseInFinish, orderWarehouseInUpdateLabel,
rollbackDelete, warehousePictureList
rollbackDelete, warehousePictureDelete, warehousePictureList
} from '@/api/ecw/order'
import orderBaseInfo from "@/components/OrderBaseInfo"
import WarehouseAreaDialog from '@/components/WarehouseAreaDialog'
......@@ -284,6 +292,8 @@ export default {
sumVolume: '',
sumWeight: '',
},
// form.urls的完整数据
urlsObject: [],
currencyList:[],
order: {},
orderId: undefined,
......@@ -320,6 +330,12 @@ export default {
},
methods: {
// 删除了入仓影像
handleDeleteImage(index) {
warehousePictureDelete(this.urlsObject[index].id).then(() => {
this.urlsObject.splice(index, 1);
})
},
getOrderItemList(){
this.orderItemList = []
return getOrderWarehouseIn(this.orderId).then(r => this.orderItemList = r.data)
......@@ -333,7 +349,8 @@ export default {
bizId: this.order.orderId,
type: 1
}).then(r =>{
this.form.urls = r.data.map(i =>i.url)
this.form.urls = r.data.map(i =>i.url).reverse()
this.urlsObject = r.data.reverse()
})
},
include(){
......
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