Commit 4e8f4b8c authored by 我在何方's avatar 我在何方
parents f43fc7e9 9a722ed7
......@@ -834,6 +834,21 @@ export function batchUnload(data) {
});
}
/**
* 批量到仓
*
* @export
* @param {*} data
* @return {*}
*/
export function airBatchUnload(data) {
return request({
url: "/ecw/box-load-info/airBatchUnload",
method: "post",
data,
});
}
/**
* 单个卸柜
*
......@@ -849,6 +864,21 @@ export function singleUnload(data) {
});
}
/**
* 单个到仓
*
* @export
* @param {*} data
* @return {*}
*/
export function airSingleUnload(data) {
return request({
url: "/ecw/box-load-info/airSingleUnload",
method: "post",
data,
});
}
/**
* 一键卸柜
*
......@@ -864,6 +894,22 @@ export function allUnload(data) {
});
}
/**
* 一键到仓
*
* @export
* @param {*} data
* @return {*}
*/
export function airAllUnload(data) {
return request({
url: "/ecw/box-load-info/airAllUnload",
method: "post",
data,
});
}
/**
* 异常
*
......
import Cookies from 'js-cookie'
const TokenKey = 'Admin-Token'
const TokenKey = 'Jd-Admin-Token'
export function getToken() {
return Cookies.get(TokenKey)
......
......@@ -87,7 +87,7 @@
</div>
<div>{{$t('入仓时间')}}:{{formatDate(item.rucangTime)}}</div>
<div>
<el-button v-if="toBePreList.sectionGoodList&&item.airShipment==4" type="text" @click="handleGoods('all', item)">[{{$t('全部分拣')}}]</el-button>
<el-button v-if="item.airShipment==4" type="text" @click="handleGoods('all', item)">[{{$t('全部分拣')}}]</el-button>
<el-button type="text" @click="foldTable(index, item)">[{{item.fold ? $t('展开') : $t('收起')}}]</el-button>
</div>
</el-row>
......@@ -123,7 +123,7 @@
width="120">{{ $t('无返回') }}</el-table-column> -->
<el-table-column :label="$t('操作')" align="center" class-name="small-padding fixed-width" width="100">
<template slot-scope="scope">
<el-button v-if="toBePreList.sectionGoodList&&item.airShipment==4" type="text" size="small" @click="handleGoods('singele',scope.row)">{{$t('分拣')}}</el-button>
<el-button v-if="item.airShipment==4" type="text" size="small" @click="handleGoods('singele',scope.row)">{{$t('分拣')}}</el-button>
</template>
</el-table-column>
</el-table>
......
......@@ -190,7 +190,7 @@ export default {
list.push({
...oItem,
warehouseInInfo,
multiSpecification: item.multiSpecification,
multiSpecification: oItem.multiSpecification,
positionNo: oItem.positionNo,
tallyStatus: item.tallyStatus,
tallyTime: item.tallyTime,
......
......@@ -151,12 +151,12 @@
import unloadingError from "./unloadingError.vue";
import {
loadGoodsList,
batchUnload,
allUnload,
airBatchUnload,
airAllUnload,
approvalCreate,
approvalCancel,
getSectionList,
singleUnload,
airSingleUnload,
boxGoodsDetail
} from "@/api/ecw/boxSea";
import { serviceMsg, getTotlContent, toReviewDetail } from "../../utils";
......@@ -254,7 +254,7 @@ export default {
this.$message.error(this.$t("请输入箱号标签"));
return;
}
singleUnload({
airSingleUnload({
orderNumCode: this.labelNo,
shipmentId: this.$attrs.shipmentObj.id,
}).then((res) => {
......@@ -274,7 +274,7 @@ export default {
this.$message.error(this.$t("请选择到仓时间"));
return;
}
batchUnload({
airBatchUnload({
orderNo: this.labelNo,
shipmentId: this.$attrs.shipmentObj.id,
unloadTime: this.ulWarehouseTime
......@@ -295,7 +295,7 @@ export default {
type: "warning",
})
.then((_) => {
allUnload({ shipmentId: this.$attrs.shipmentObj.id, unloadTime: this.ulWarehouseTime }).then((res) => {
airAllUnload({ shipmentId: this.$attrs.shipmentObj.id, unloadTime: this.ulWarehouseTime }).then((res) => {
serviceMsg(res, this).then((res) => {
this.getLoadGoodsList();
});
......
......@@ -184,6 +184,10 @@ export default {
case "cusDeclaration":
this.$set(this.dialogConfig, "width", "700px");
break;
// 清关
case "cusClearance":
this.$set(this.dialogConfig, "width", "700px");
break;
// AGENT
case "agent":
this.$set(this.dialogConfig, "title", this.$t("代理商设置"));
......
......@@ -297,8 +297,8 @@ function airBaseData() {
keyName: "toWarehouseStatus",
status: {
start: [181],
wait: [182, 183, 184, 185],
end: [186],
wait: [182, 183, 184],
end: [185, 186],
},
},
],
......
......@@ -141,9 +141,10 @@
<div>
{{$t('运费')}}{{row.oneSeaFreight}} {{currentcyMap[row.seaFreightCurrency]}} / {{unitMap[row.seaFreightVolume]}}
</div>
<div>
<div v-if="row.oneClearanceFreight">
{{$t('清关费')}}{{row.oneClearanceFreight}} {{currentcyMap[row.clearanceFreightCurrency]}} / {{unitMap[row.clearanceFreightVolume]}}
</div>
<div v-else>{{$t('清关费未报价')}}</div>
</template>
</template>
</el-table-column>
......
......@@ -4,7 +4,7 @@
<el-dialog
:title="title + ' - ' + warehousing.orderNo"
:visible.sync="visible"
width="1280px"
width="100%"
>
<el-tabs v-model="activeName" type="card">
<el-tab-pane :label="edit ? $t('货物修改') : $t('货物入仓')" name="first">
......@@ -185,8 +185,16 @@
:is-editing="edit"></warehouse-area-select>
</template>
</el-table-column>
<el-table-column :label="$t('备注')">
<template v-slot="{r,c,$index}">
<el-form-item>
<el-input v-model="form.table[$index].remark" type="textarea" show-word-limit maxlength="100" placeholder=""></el-input>
</el-form-item>
</template>
</el-table-column>
<el-table-column :label="$t('操作')">
<template v-slot="{ row, column, $index}">
<WarehouseRecordDetail v-model="form.table[$index].orderWarehouseInDetailsVOList" />
<el-popconfirm
v-if="$index >= protectRowCount"
title="确定要删除该行入仓记录吗?"
......@@ -505,11 +513,13 @@ import {getProductAttrList} from "@/api/ecw/productAttr"
import {getProductTypeList} from "@/api/ecw/productType"
import {addProduct} from "@/api/ecw/product"
import ImageAndVideoUpload from "@/components/ImageAndVideoUpload/index.vue"
import WarehouseRecordDetail from "@/views/ecw/order/warehousing/components/WarehouseRecordDetail.vue"
export default {
name: "Warehouse",
components: {
WarehouseRecordDetail,
ImageAndVideoUpload,
ProductSelector,
WarehouseAreaSelect,
......
<template>
<div style="display: inline-block">
<el-button size="mini" type="primary" style="margin-right: 10px" @click="handleOpen">{{ title }}</el-button>
<el-dialog
append-to-body
:title="title"
:visible.sync="dialogVisible"
width="1024px"
:before-close="handleClose">
<el-form>
<WarehouseRecordDetailItem v-for="(item, index) in dataList" :key="index" v-model="dataList[index]" :index="index" :attr-list="attrList" />
</el-form>
<el-button type="primary" size="mini" @click="handleAddItem">添加一条明细</el-button>
<span slot="footer" class="dialog-footer">
<el-button @click="dialogVisible = false">取 消</el-button>
<el-button type="primary" @click="handleSave">确 定</el-button>
</span>
</el-dialog>
</div>
</template>
<script>
import ProductSelector from "@/components/ProductSelector/index.vue";
import WarehouseRecordDetailItem from "@/views/ecw/order/warehousing/components/WarehouseRecordDetailItem.vue";
import {getProductAttrList} from "@/api/ecw/productAttr";
/**
* 入仓明细弹窗
*/
export default {
name: 'WarehouseRecordDetail',
components: {WarehouseRecordDetailItem, ProductSelector},
props: {
value: {
type: Array,
default: () => []
},
readOnly: {
type: Boolean,
default: false
}
},
data() {
return {
dialogVisible: false,
dataList: [],
// 特性列表
attrList: []
};
},
mounted() {
this.getAttrList()
},
methods: {
init() {
if (!this.value || this.value.length === 0) {
this.dataList = [{
"boxGauge": "",
"boxGauge1": "",
"boxGauge2": "",
"boxGauge3": "",
"brand": undefined,
"cartonsNum": undefined,
"createTime": "",
"expressNo": "",
"prodAttrIds": [],
"prodId": undefined,
"quantityAll": undefined,
"specificationType": undefined,
"unit": "",
"usageIds": "",
"volume": undefined,
"weight": undefined
}]
} else {
this.dataList = JSON.parse(JSON.stringify(this.value))
}
},
/** 获取产品属性列表 */
getAttrList() {
getProductAttrList().then(response => {
this.attrList = response.data;
})
},
handleAddItem() {
this.dataList.push({
"boxGauge": "",
"boxGauge1": "",
"boxGauge2": "",
"boxGauge3": "",
"brand": undefined,
"cartonsNum": undefined,
"createTime": "",
"expressNo": "",
"prodAttrIds": [],
"prodId": undefined,
"quantityAll": undefined,
"specificationType": undefined,
"unit": "",
"usageIds": "",
"volume": undefined,
"weight": undefined
})
},
handleOpen() {
this.init()
this.dialogVisible = true
},
handleClose(done) {
this.$confirm('确认关闭?')
.then(_ => {
done();
})
.catch(_ => {});
},
handleSave() {
this.$emit('input', this.dataList)
}
},
computed: {
title() {
return !this.value || this.value.length === 0 ? '添加箱明细' : '编辑箱明细'
}
}
}
</script>
<style scoped lang="scss">
</style>
<template>
<el-card style="margin-bottom: 10px">
<div slot="header">
<span>序号{{ index + 1 }}</span>
</div>
<el-row :gutter="10">
<el-col :span="12">
<el-form-item :label="$t('中文品名')">
<product-selector v-if="!readOnly" v-model="value.prodId" determined protect-once/>
<span v-else>{{ value.prodTitleZh }}</span>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item :label="$t('品牌')">
<el-select
v-model="value.brand"
:placeholder="$t('可修改')"
filterable
remote
@change="handleBrandChange"
:remote-method="getProductBrandPage"
clearable>
<el-option
v-for="item in brandList"
:key="item.id"
:label="item.titleZh"
:value="item.id">
</el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="10">
<el-col :span="12">
<el-form-item :label="$t('商品特性')">
<el-checkbox-group v-model="value.prodAttrIds">
<el-checkbox v-for="item in attrList" :key="item.id" :label="item.id">{{ item.attrName }}</el-checkbox>
</el-checkbox-group>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item :label="$t('用途')">
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="10">
<el-col :span="4">
<el-form-item :label="$t('长')">
<el-input v-model="value.boxGauge1" />
</el-form-item>
</el-col>
<el-col :span="4">
<el-form-item :label="$t('宽')">
<el-input v-model="value.boxGauge2" />
</el-form-item>
</el-col>
<el-col :span="4">
<el-form-item :label="$t('高')">
<el-input v-model="value.boxGauge3" />
</el-form-item>
</el-col>
<el-col :span="4">
<el-form-item :label="$t('重量')">
<el-input v-model="value.weight" />
</el-form-item>
</el-col>
<el-col :span="4">
<el-form-item :label="$t('体积')">
<el-input v-model="value.volume" />
</el-form-item>
</el-col>
</el-row>
</el-card>
</template>
<script>
import ProductSelector from "@/components/ProductSelector/index.vue";
import {getProductBrankPage} from "@/api/ecw/productBrank";
import {getProductAttrList} from "@/api/ecw/productAttr";
// import {getFeeTypeByOrderProduct} from "@/api/ecw/productBrank";
export default {
name: "WarehouseRecordDetailItem",
components: {ProductSelector},
props: {
value: {
type: Object,
default: () => {}
},
index: {
type: Number,
default: 0
},
readOnly: {
type: Boolean,
default: false
},
// 特性列表
attrList: {
type: Array,
default: () => []
}
},
data() {
return {
brandList: [],
}
},
methods: {
/** 获取产品属性列表 */
getAttrList() {
getProductAttrList().then(response => {
this.attrList = response.data;
})
},
handleBrandChange(v){
// getFeeTypeByOrderProduct({
// brandId: parseInt(v),
// productId: this.warehousing.prodId,
// orderId: this.orderId
// }).then(r => {
// if(r.code === 0){
// (this.activeName === "first" ? this.form : this.form1).feeType = parseInt(r.data.feeType);
// (this.activeName === "first" ? this.form : this.form1).recordMode = parseInt(r.data.recordMode)
// }
// })
},
getProductBrandPage(titleZh = undefined) {
getProductBrankPage({pageSize: 20, titleZh}).then(r => {
this.brandList = r.data.list
})
},
}
}
</script>
<style scoped lang="scss">
</style>
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