parent
fb9d0b9ad2
commit
6c3c8b3e66
@ -0,0 +1,28 @@
|
||||
<template>
|
||||
<span>{{ warehouseName }}</span>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: 'WarehouseName',
|
||||
props: {
|
||||
stockCode: {
|
||||
type: String,
|
||||
default: ''
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
warehouseName() {
|
||||
const stock = this.$store.getters.warehouseData[this.stockCode] || {};
|
||||
return stock.stockName;
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.$store.dispatch('warehouse/getWarehouse', {})
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
|
||||
</style>
|
||||
@ -0,0 +1,22 @@
|
||||
export default {
|
||||
inserted: function (el) {
|
||||
const inputs = el.querySelectorAll("input");
|
||||
const inputArray = Array.from(inputs);
|
||||
|
||||
inputArray.forEach((input, index) => {
|
||||
input.setAttribute("keyFocusIndex", index);
|
||||
input.addEventListener("keydown", (ev) => {
|
||||
if (ev.keyCode === 13) {
|
||||
const targetTo = ev.srcElement.getAttribute("keyFocusTo");
|
||||
if (targetTo) {
|
||||
this.$refs[targetTo].$el.focus();
|
||||
} else {
|
||||
const attrIndex = ev.srcElement.getAttribute("keyFocusIndex");
|
||||
const ctlI = parseInt(attrIndex);
|
||||
if (ctlI < inputArray.length - 1) inputArray[ctlI + 1].focus();
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
},
|
||||
}
|
||||
@ -0,0 +1,39 @@
|
||||
import { listWarehouse } from "@/api/cmwarehouse";
|
||||
|
||||
const state = {
|
||||
warehouse: {}
|
||||
};
|
||||
|
||||
const mutations = {
|
||||
SET_WAREHOUSE: (state, warehouse) => {
|
||||
state.warehouse = warehouse;
|
||||
}
|
||||
};
|
||||
|
||||
const actions = {
|
||||
// 获取仓库列表
|
||||
getWarehouse({ commit }, params) {
|
||||
return new Promise((resolve, reject) => {
|
||||
listWarehouse(params)
|
||||
.then(response => {
|
||||
const data = response.data || [];
|
||||
const warehouseMap = {};
|
||||
data.forEach(item => {
|
||||
warehouseMap[item.stockCode] = item;
|
||||
});
|
||||
commit('SET_WAREHOUSE', warehouseMap);
|
||||
resolve(warehouseMap);
|
||||
})
|
||||
.catch(error => {
|
||||
reject(error);
|
||||
});
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
export default {
|
||||
namespaced: true,
|
||||
state,
|
||||
mutations,
|
||||
actions
|
||||
};
|
||||
@ -0,0 +1,248 @@
|
||||
<template>
|
||||
<div style="display: flex;flex-direction: column;" v-loading="loading">
|
||||
|
||||
|
||||
<el-row :gutter="6" type="flex" align="middle">
|
||||
<el-col :span="1.5">
|
||||
<label >备案号</label>
|
||||
</el-col>
|
||||
<el-col :span="4">
|
||||
<el-input v-model="searchGdsSeqno" placeholder="请输入备案号" id="gdsSeqno"></el-input>
|
||||
</el-col>
|
||||
<el-col :span="2">
|
||||
<el-button type="primary" @click="getList">查询</el-button>
|
||||
</el-col>
|
||||
|
||||
</el-row>
|
||||
|
||||
|
||||
<el-table ref="table" style="flex: 1;" height="70vh" :data="list" @select="select" @select-all="selectAll"
|
||||
@selection-change="selectionChange" @current-change="handleCurrentChange" highlight-current-row border stripe>
|
||||
|
||||
<el-table-column type="selection" width="55" align="center" :selectable="selectable" />
|
||||
|
||||
<el-table-column type="expand" label="更多">
|
||||
<template slot-scope="scope">
|
||||
<el-descriptions class="desc-table" size="mini" :column="5" border>
|
||||
<el-descriptions-item label="仓库名称">
|
||||
{{scope.row.stockName}}/{{scope.row.shelfName}}/{{scope.row.locationName}}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="HS编号">{{ scope.row.hsCode }}</el-descriptions-item>
|
||||
<el-descriptions-item label="自然序号">{{ scope.row.cargoNumber }}</el-descriptions-item>
|
||||
<el-descriptions-item label="商品料号">{{ scope.row.itemNumber }}</el-descriptions-item>
|
||||
<el-descriptions-item label="电子账册项号">{{ scope.row.bookNumber }}</el-descriptions-item>
|
||||
<el-descriptions-item label="报关单号">{{ scope.row.customsNo }}</el-descriptions-item>
|
||||
<el-descriptions-item label="核注清单号">{{ scope.row.listNumber }}</el-descriptions-item>
|
||||
<el-descriptions-item label="有效期至">{{ scope.row.expiryDate }}</el-descriptions-item>
|
||||
<el-descriptions-item label="规格类型品质">{{ scope.row.cargoSpec }}</el-descriptions-item>
|
||||
<el-descriptions-item label="原产国">{{ scope.row.originCountry }}</el-descriptions-item>
|
||||
<el-descriptions-item label="备案号">{{ scope.row.gdsSeqno }}</el-descriptions-item>
|
||||
|
||||
|
||||
</el-descriptions>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column label="单据编号" prop="billNumber">
|
||||
<template slot-scope="scope">
|
||||
<div class="nomal-text">{{ scope.row.billNumber }}</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="货物" prop="cargoName">
|
||||
<template slot-scope="scope">
|
||||
<div class="nomal-text">{{ scope.row.cargoName }}</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="仓库" prop="stockName">
|
||||
<template slot-scope="scope">
|
||||
<div class="nomal-text">
|
||||
{{scope.row.stockName}}/{{scope.row.shelfName}}/{{scope.row.locationName}}
|
||||
</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="件数" prop="cargoNum">
|
||||
<template slot-scope="scope">
|
||||
<div class="nomal-text">{{ scope.row.cargoNum }}</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="重量" prop="cargoWt">
|
||||
<template slot-scope="scope">
|
||||
<div class="nomal-text">{{ scope.row.cargoWt }}</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="体积" prop="cargoVol">
|
||||
<template slot-scope="scope">
|
||||
<div class="nomal-text">{{ scope.row.cargoVol }}</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="价值" prop="cargoValue">
|
||||
<template slot-scope="scope">
|
||||
<div class="nomal-text">{{ scope.row.cargoValue }}</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<div class="stock-btns">
|
||||
<el-button @click="$emit('cancel')">取消</el-button>
|
||||
<el-button type="primary" @click="save">确认</el-button>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { listCkstock } from "@/api/ckcargostock";
|
||||
import WarehouseName from '@/components/WarehouseName';
|
||||
|
||||
export default {
|
||||
name: 'StockChoose',
|
||||
components: {
|
||||
WarehouseName,
|
||||
},
|
||||
props: {
|
||||
custId: {
|
||||
type: String | Number,
|
||||
default: ''
|
||||
},
|
||||
disableItems: {
|
||||
type: Array,
|
||||
default() {
|
||||
return [];
|
||||
}
|
||||
},
|
||||
single: {
|
||||
type: Boolean,
|
||||
default: false,
|
||||
},
|
||||
singleItem: {
|
||||
type: Object,
|
||||
default() {
|
||||
return {};
|
||||
}
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
list: [],
|
||||
selectedList: [],
|
||||
loading: false,
|
||||
searchGdsSeqno: '',
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
custId() {
|
||||
this.getList();
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.getList();
|
||||
},
|
||||
methods: {
|
||||
selectable(row, index) {
|
||||
if (this.disableItems && this.disableItems.length) {
|
||||
return !this.disableItems.some(val => val.outBillNumber === row.billNumber && val.outStockId === row.stockId && val.cargoId === row.cargoId);
|
||||
}
|
||||
return true;
|
||||
},
|
||||
|
||||
// 点击全选
|
||||
selectAll(selection) {
|
||||
if (this.single) {
|
||||
// 单选时多选框取消选中
|
||||
this.$refs.table.clearSelection();
|
||||
}
|
||||
},
|
||||
select(selection, row) {
|
||||
if (this.single) {
|
||||
// 单选时取消选中所有再选中
|
||||
this.$nextTick(() => {
|
||||
this.$refs.table.clearSelection();
|
||||
this.$nextTick(() => {
|
||||
this.$refs.table.toggleRowSelection(row);
|
||||
});
|
||||
});
|
||||
|
||||
}
|
||||
},
|
||||
// 选中项变化
|
||||
selectionChange(sel) {
|
||||
console.log('选中项变化', sel);
|
||||
if (sel.length === 0) {
|
||||
// 清空选中
|
||||
this.$refs.table.setCurrentRow();
|
||||
}
|
||||
this.selectedList = sel;
|
||||
},
|
||||
// 当前选中某一项
|
||||
handleCurrentChange(currentRow) {
|
||||
if (this.single) {
|
||||
// 单选时取消选中所有再选中
|
||||
this.$nextTick(() => {
|
||||
this.$refs.table.clearSelection();
|
||||
this.$nextTick(() => {
|
||||
if (currentRow) {
|
||||
this.$refs.table.toggleRowSelection(currentRow);
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
},
|
||||
save() {
|
||||
this.$emit('confirm', this.selectedList);
|
||||
},
|
||||
getList() {
|
||||
this.list = [];
|
||||
if (!this.custId) return;
|
||||
this.loading = true;
|
||||
listCkstock({
|
||||
custId: this.custId,
|
||||
gdsSeqno: this.searchGdsSeqno,
|
||||
}).then(res => {
|
||||
this.loading = false;
|
||||
this.list = res || [];
|
||||
if (this.singleItem.stockId) {
|
||||
const findex = this.list.findIndex(val => val.billNumber === this.singleItem.billNumber && val.stockId === this.singleItem.stockId && val.cargoId === this.singleItem.cargoId);
|
||||
if (findex > -1) {
|
||||
this.$nextTick(() => {
|
||||
this.$refs.table.toggleRowSelection(this.list[findex]);
|
||||
});
|
||||
}
|
||||
}
|
||||
this.$emit('updateList', this.list);
|
||||
}).catch(e => {
|
||||
this.loading = false;
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.stock-btns {
|
||||
margin-top: 10px;
|
||||
display: flex;
|
||||
justify-content: right;
|
||||
}
|
||||
|
||||
.nomal-text {
|
||||
padding: 8px 10px;
|
||||
}
|
||||
|
||||
.desc-table {
|
||||
padding: 5px;
|
||||
}
|
||||
|
||||
/* ::v-deep .el-table td.el-table__cell {
|
||||
padding: 10px;
|
||||
}
|
||||
|
||||
::v-deep .el-table--border .el-table__cell {
|
||||
padding: 10px;
|
||||
}
|
||||
|
||||
::v-deep .el-table .cell {
|
||||
padding: 10px;
|
||||
}
|
||||
|
||||
::v-deep .el-table--border .el-table__cell:first-child .cell {
|
||||
padding-left: 10px;
|
||||
} */</style>
|
||||
@ -0,0 +1,731 @@
|
||||
<template>
|
||||
<div class="app-container">
|
||||
<SearchBlock v-model="queryParams" v-show="showSearch" size="mini" :menus="queryOption" @change="handleQuery"></SearchBlock>
|
||||
<!-- <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="100px">
|
||||
<el-form-item label="单据编号" prop="billNumber">
|
||||
<el-input
|
||||
v-model="queryParams.billNumber"
|
||||
placeholder="请输入单据编号"
|
||||
clearable
|
||||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="航次号" prop="voyageNo">
|
||||
<el-input
|
||||
v-model="queryParams.voyageNo"
|
||||
placeholder="请输入航次号"
|
||||
clearable
|
||||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="船舶名称" prop="vesselName">
|
||||
<el-input
|
||||
v-model="queryParams.vesselName"
|
||||
placeholder="请输入船舶名称"
|
||||
clearable
|
||||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="货物名称" prop="cargoName">
|
||||
<el-input
|
||||
v-model="queryParams.cargoName"
|
||||
placeholder="请输入货物名称"
|
||||
clearable
|
||||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="仓库名称" prop="stockCode" class="search-item">
|
||||
<el-select v-model="queryParams.stockCode" filterable placeholder="请选择">
|
||||
<el-option v-for="dict in warehouses" :key="dict.stockCode" :label="dict.stockName" :value="dict.stockCode">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="仓位名称" prop="stockName" class="search-item">
|
||||
<el-select v-model="queryParams.stockName" filterable placeholder="请选择">
|
||||
<el-option v-for="dict in stockList" :key="dict.stockName" :label="dict.stockName" :value="dict.stockName">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="报关单号" prop="customsNo">
|
||||
<el-input
|
||||
v-model="queryParams.customsNo"
|
||||
placeholder="请输入报关单号"
|
||||
clearable
|
||||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="核注清单号" prop="listNumber" >
|
||||
<el-input
|
||||
v-model="queryParams.listNumber"
|
||||
placeholder="请输入核注清单号"
|
||||
clearable
|
||||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="项号" prop="bookNumber" >
|
||||
<el-input
|
||||
v-model="queryParams.bookNumber"
|
||||
placeholder="请输入项号"
|
||||
clearable
|
||||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="单据日期" prop="queryTime">
|
||||
<el-date-picker clearable
|
||||
v-model="queryTime"
|
||||
type="daterange"
|
||||
:picker-options="pickerOptions"
|
||||
value-format="yyyy-MM-dd"
|
||||
end-placeholder="结束日期"
|
||||
range-separator="-" start-placeholder="开始日期"
|
||||
placeholder="请选择单据日期">
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
<el-form-item label="有效期至" prop="queryTime">
|
||||
<el-date-picker clearable
|
||||
v-model="queryTimeTwo"
|
||||
size="small"
|
||||
:picker-options="pickerOptions"
|
||||
end-placeholder="结束日期"
|
||||
range-separator="-" start-placeholder="开始日期" type="daterange"
|
||||
value-format="yyyy-MM-dd"
|
||||
placeholder="请选择有效期至">
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item>
|
||||
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
|
||||
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
|
||||
</el-form-item>
|
||||
</el-form> -->
|
||||
|
||||
<el-row :gutter="10" class="mb8">
|
||||
|
||||
|
||||
<el-col :span="1.5">
|
||||
<el-button
|
||||
type="warning"
|
||||
plain
|
||||
icon="el-icon-download"
|
||||
size="mini"
|
||||
@click="handleExport"
|
||||
v-hasPermi="['jxc:ckcargo:export']"
|
||||
>导出</el-button>
|
||||
</el-col>
|
||||
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
|
||||
</el-row>
|
||||
|
||||
<el-table v-loading="loading" highlight-current-row :data="ckcargoList" @sort-change="handleSortChange" @selection-change="handleSelectionChange">
|
||||
<el-table-column type="selection" width="55" align="center" />
|
||||
<el-table-column label="单据编号" align="center" prop="billNumber" sortable='custom' width="100"/>
|
||||
<el-table-column label="单据日期" align="center" prop="billDate" width="180" sortable='custom'>
|
||||
<template slot-scope="scope">
|
||||
<span>{{ parseTime(scope.row.billDate, '{y}-{m}-{d} {h}:{i}:{s}') }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="仓库名称" align="center" prop="stockCode" sortable='custom' width="120">
|
||||
<template slot-scope="scope">
|
||||
{{scope.row.stockName}}/{{scope.row.shelfName}}/{{scope.row.locationName}}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="仓位名称" align="center" prop="stockName" sortable='custom' width="100" v-if="false"/>
|
||||
<el-table-column label="货主名称" align="center" prop="custName" sortable='custom' width="100"/>
|
||||
<el-table-column label="商品编码" align="center" prop="hsCode" sortable='custom' width="100"/>
|
||||
<el-table-column label="货物名称" align="center" prop="cargoName" sortable='custom' width="100"/>
|
||||
<el-table-column label="入库库件数" align="center" prop="cargoNum" sortable='custom' width="130"/>
|
||||
<el-table-column label="入库重量" align="center" prop="cargoWt" sortable='custom' width="130"/>
|
||||
<el-table-column label="入库体积" align="center" prop="cargoVol" sortable='custom' width="130"/>
|
||||
<el-table-column label="入库货物价值" align="center" prop="cargoValue" sortable='custom' width="130"/>
|
||||
<el-table-column label="货物自然序号" align="center" prop="cargoNumber" sortable='custom'width="130" />
|
||||
<el-table-column label="商品料号" align="center" prop="itemNumber" sortable='custom' width="100" />
|
||||
<el-table-column label="电子账册项号" align="center" prop="bookNumber" sortable='custom' width="130"/>
|
||||
<el-table-column label="HS编号" align="center" prop="hsCode" sortable='custom'width="100" />
|
||||
<el-table-column label="货物名称" align="center" prop="cargoName" sortable='custom' width="100"/>
|
||||
<el-table-column label="规格类型品质" show-overflow-tooltip align="center" prop="cargoSpec" sortable='custom' min-width="200"/>
|
||||
<el-table-column label="原产国" align="center" prop="originCountry" sortable='custom' width="100">
|
||||
<template slot-scope="scope">
|
||||
<dict-tag :options="dict.type.sys_origin_country"
|
||||
:value="scope.row.originCountry != null ? scope.row.originCountry : ''"></dict-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="报关单号" align="center" prop="customsNo" sortable='custom' width="100"/>
|
||||
<el-table-column label="核注清单号" align="center" prop="listNumber" sortable='custom' width="130"/>
|
||||
<el-table-column label="提运单号" align="center" prop="billNo" sortable='custom' width="100"/>
|
||||
<el-table-column label="贸易性质" align="center" prop="tradType" sortable='custom' width="100">
|
||||
<template slot-scope="scope">
|
||||
<dict-tag :options="dict.type.sys_trade_nature" :value="scope.row.tradType"/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<!-- <el-table-column label="船舶信息" align="center">-->
|
||||
<!-- <el-table-column label="航次号" align="center" prop="voyageNo" sortable='custom' width="100"/>-->
|
||||
<!-- <el-table-column label="船舶名称" align="center" prop="vesselName" sortable='custom' width="100"/>-->
|
||||
<!-- </el-table-column>-->
|
||||
<el-table-column label="有效期至" align="center" prop="expiryDate" width="180" sortable='custom'>
|
||||
<template slot-scope="scope">
|
||||
<span>{{ parseTime(scope.row.expiryDate, '{y}-{m}-{d} {h}:{i}:{s}') }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
|
||||
</el-table>
|
||||
<el-row>
|
||||
<el-col :span="12" class="text-right" style=" margin-top: 10px; margin-left: 10px">
|
||||
<span style="font-size: 16px">总重量: {{ totalWeight }}</span>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<pagination
|
||||
:total="total"
|
||||
:page.sync="queryParams.pageNum"
|
||||
:limit.sync="queryParams.pageSize"
|
||||
@pagination="getList"
|
||||
/>
|
||||
|
||||
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { ckbillcargoListApi as pageListCkcargo, ckbillcargoDetailApi as getCkcargo, ckbillcargoDeleteApi as delCkcargo, ckbillcargoCreateApi as addCkcargo, ckbillcargoUpdateApi as updateCkcargo,selectTotalWt } from "@/api/ckbillcargo";
|
||||
// import { listStock } from "@/api/jxc/stock";
|
||||
import { cmcustListByAll as listCust } from "@/api/cmcust";
|
||||
import { cmcustproductListByAll as listCargo } from "@/api/cmcustproduct";
|
||||
// import {listVessel,} from "@/api/jxc/vessel";
|
||||
// import {listBmvoyage} from "@/api/jxc/bmvoyage";
|
||||
import {listWarehouse} from "@/api/cmwarehouse";
|
||||
import { cmshelfListByAll as listShelf } from "@/api/cmshelf";
|
||||
import { datePickerOpts } from "@/utils";
|
||||
import SearchBlock from '@/components/SearchBlock';
|
||||
import WarehouseName from '@/components/WarehouseName';
|
||||
|
||||
|
||||
export default {
|
||||
name: "Instock",
|
||||
components: {
|
||||
SearchBlock,
|
||||
WarehouseName,
|
||||
},
|
||||
dicts: ['sys_business_nature', 'sys_trade_nature','sys_inbound_outbound_type','sys_origin_country'],
|
||||
data() {
|
||||
return {
|
||||
//仓库名称、项号、核注清单号、有效期至
|
||||
queryOption: [
|
||||
{
|
||||
label: '仓库名称',
|
||||
prop: 'stockCode',
|
||||
type: 'select',
|
||||
getOptions: () => this.warehouses,
|
||||
optionsProp: 'stockCode',
|
||||
optionsLabel: 'stockName',
|
||||
},
|
||||
{
|
||||
label: '项号',
|
||||
prop: 'bookNumber',
|
||||
type: 'text',
|
||||
},
|
||||
{
|
||||
label: '核注清单号',
|
||||
prop: 'listNumber',
|
||||
type: 'text',
|
||||
labelWidth: '90px'
|
||||
},
|
||||
{
|
||||
label: '有效期至',
|
||||
prop: 'excTime',
|
||||
type: 'daterange',
|
||||
options: datePickerOpts()
|
||||
},
|
||||
{
|
||||
label: '单据编号',
|
||||
prop: 'billNumber',
|
||||
type: 'text',
|
||||
},
|
||||
// {
|
||||
// label: '船舶名称',
|
||||
// prop: 'vesselName',
|
||||
// type: 'text',
|
||||
// },
|
||||
{
|
||||
label: '商品编码',
|
||||
prop: 'hsCode',
|
||||
type: 'text',
|
||||
},
|
||||
{
|
||||
label: '货物名称',
|
||||
prop: 'cargoName',
|
||||
type: 'text',
|
||||
},
|
||||
// {
|
||||
// label: '航次',
|
||||
// prop: 'voyageNo',
|
||||
// type: 'text',
|
||||
// },
|
||||
{
|
||||
label: '货架名称',
|
||||
prop: 'shelfName',
|
||||
type: 'select',
|
||||
getOptions: () => this.shelfList,
|
||||
optionsProp: 'shelfName',
|
||||
optionsLabel: 'shelfName',
|
||||
},
|
||||
{
|
||||
label: '报关单号',
|
||||
prop: 'customsNo',
|
||||
type: 'text',
|
||||
},
|
||||
{
|
||||
label: '单据日期',
|
||||
prop: 'queryTime',
|
||||
type: 'daterange',
|
||||
options: datePickerOpts()
|
||||
},
|
||||
{
|
||||
label: '货主名称',
|
||||
prop: 'custName',
|
||||
type: 'text',
|
||||
},
|
||||
{
|
||||
label: '贸易性质',
|
||||
prop: 'tradType',
|
||||
type: 'select',
|
||||
getOptions: () => this.dict.type.sys_trade_nature,
|
||||
},
|
||||
],
|
||||
activeName: ['1', '2', '3'],
|
||||
pickerOptions: {
|
||||
shortcuts: [{
|
||||
text: '最近一周',
|
||||
onClick(picker) {
|
||||
const end = new Date();
|
||||
const start = new Date();
|
||||
start.setTime(start.getTime() - 3600 * 1000 * 24 * 7);
|
||||
picker.$emit('pick', [start, end]);
|
||||
}
|
||||
}, {
|
||||
text: '最近一个月',
|
||||
onClick(picker) {
|
||||
const end = new Date();
|
||||
const start = new Date();
|
||||
start.setTime(start.getTime() - 3600 * 1000 * 24 * 30);
|
||||
picker.$emit('pick', [start, end]);
|
||||
}
|
||||
}, {
|
||||
text: '最近三个月',
|
||||
onClick(picker) {
|
||||
const end = new Date();
|
||||
const start = new Date();
|
||||
start.setTime(start.getTime() - 3600 * 1000 * 24 * 90);
|
||||
picker.$emit('pick', [start, end]);
|
||||
}
|
||||
}]
|
||||
},
|
||||
totalWeight: 0,
|
||||
// 遮罩层
|
||||
loading: true,
|
||||
// 选中数组
|
||||
ids: [],
|
||||
// 选中名字
|
||||
names: [],
|
||||
// 非单个禁用
|
||||
single: true,
|
||||
// 非多个禁用
|
||||
multiple: true,
|
||||
// 显示搜索条件
|
||||
showSearch: true,
|
||||
// 总条数
|
||||
total: 0,
|
||||
// 有效期
|
||||
queryTimeTwo: [],
|
||||
// 单据时间
|
||||
queryTime: [],
|
||||
// 仓库名称数据
|
||||
warehouses: [],
|
||||
// 船舶航次表格数据
|
||||
bmvoyageList: [],
|
||||
// 船舱表格数据
|
||||
vesselList: [],
|
||||
// 客户表格数据
|
||||
custList: [],
|
||||
// 货物表格数据
|
||||
cargoList: [],
|
||||
// 仓库表格数据
|
||||
stockList: [],
|
||||
// 货架表格数据
|
||||
shelfList: [],
|
||||
// 仓库入库管理表格数据
|
||||
ckcargoList: [],
|
||||
// 弹出层标题
|
||||
title: "",
|
||||
// 是否显示弹出层
|
||||
open: false,
|
||||
// 查询参数
|
||||
queryParams: {
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
billId: null,
|
||||
billDate: null,
|
||||
billNumber: null,
|
||||
inoutType: "1",
|
||||
voyageId: null,
|
||||
voyageNo: null,
|
||||
vesselId: null,
|
||||
vesselName: null,
|
||||
cargoId: null,
|
||||
hsCode: null,
|
||||
cargoName: null,
|
||||
billNo: null,
|
||||
cargoSpec: null,
|
||||
originCountry: null,
|
||||
custId: null,
|
||||
custName: null,
|
||||
opType: null,
|
||||
tradType: null,
|
||||
cargoNum: null,
|
||||
cargoWt: null,
|
||||
cargoVol: null,
|
||||
stockId: null,
|
||||
stockCode: null,
|
||||
stockName: null,
|
||||
shelfName: null,
|
||||
cargoValue:null,
|
||||
customsNo:null,
|
||||
listNumber:null,
|
||||
beginDate: null,
|
||||
endDate: null,
|
||||
beginDateTwo: null,
|
||||
endDateTwo: null,
|
||||
bookNumber: null,
|
||||
},
|
||||
// 表单参数
|
||||
form: {},
|
||||
// 表单校验
|
||||
rules: {
|
||||
stockId: [
|
||||
{ required: true, message: "库场ID不能为空", trigger: "blur" }
|
||||
],
|
||||
billDate: [
|
||||
{ required: true, message: "单据日期不能为空", trigger: "blur" }
|
||||
],
|
||||
billNumber: [
|
||||
{ required: true, message: "单据编号不能为空", trigger: "blur" }
|
||||
],
|
||||
inoutType: [
|
||||
{ required: true, message: "出入库类型不能为空", trigger: "blur" }
|
||||
],
|
||||
voyageNo: [
|
||||
{ required: true, message: "航次号不能为空", trigger: "blur" }
|
||||
],
|
||||
vesselName: [
|
||||
{ required: true, message: "船舶名称不能为空", trigger: "blur" }
|
||||
],
|
||||
cargoName: [
|
||||
{ required: true, message: "货物名称不能为空", trigger: "blur" }
|
||||
],
|
||||
cargoWt: [
|
||||
{ required: true, message: "货物重量不能为空", trigger: "blur" }
|
||||
],
|
||||
cargoNum: [
|
||||
{ required: true, message: "货物件数不能为空", trigger: "blur" }
|
||||
],
|
||||
cargoVol: [
|
||||
{ required: true, message: "货物体积不能为空", trigger: "blur" }
|
||||
],
|
||||
stockName: [
|
||||
{ required: true, message: "库场名称不能为空", trigger: "blur" }
|
||||
],
|
||||
custName: [
|
||||
{ required: true, message: "货主名称不能为空", trigger: "blur" }
|
||||
],
|
||||
}
|
||||
};
|
||||
},
|
||||
created() {
|
||||
this.getList();
|
||||
// this.getStockList();
|
||||
this.getCustList();
|
||||
this.getCargoList();
|
||||
this.getWarehouseList();
|
||||
this.getShelfList();
|
||||
|
||||
// listWarehouse({}).then(response => {
|
||||
// console.log(response)
|
||||
// this.warehouses = response.list;
|
||||
// });
|
||||
},
|
||||
methods: {
|
||||
getWarehouseList() {
|
||||
let param = {};
|
||||
listWarehouse(param).then(response => {
|
||||
this.warehouses = response || [];
|
||||
}).catch(e => {
|
||||
this.warehouses = [];
|
||||
});
|
||||
},
|
||||
//航次
|
||||
// setBmvoyageDetail(voyageId) {
|
||||
// this.bmvoyageList.forEach(ele => {
|
||||
// if (ele.id == voyageId) {
|
||||
// this.form.voyageNo = ele.voyageNo;
|
||||
// this.form.vesselName = ele.vesselName;
|
||||
// // this.form.berthName = ele.berthName;
|
||||
// this.form.deptId = ele.deptId;
|
||||
// this.form.vesselId = ele.vesselId;
|
||||
// this.form.netTon = ele.netTon;
|
||||
// this.form.opType = ele.opType;
|
||||
// }
|
||||
// })
|
||||
// },
|
||||
// getBmvoyage() {
|
||||
// let param = {};
|
||||
// listBmvoyage(param).then(response => {
|
||||
// this.bmvoyageList = response.data;
|
||||
// }).catch(e => {
|
||||
// });
|
||||
// },
|
||||
//船舶
|
||||
// setVesselDetail(vesselId) {
|
||||
// this.vesselList.forEach(ele => {
|
||||
// if (ele.id == vesselId) {
|
||||
// this.form.vesselName = ele.vesselName;
|
||||
//
|
||||
// }
|
||||
// })
|
||||
// },
|
||||
// getVesselList() {
|
||||
// let param = {};
|
||||
// listVessel(param).then(response => {
|
||||
// this.vesselList = response.data;
|
||||
// }).catch(e => {
|
||||
// });
|
||||
// },
|
||||
//货物
|
||||
setCargoDetail(cargoId) {
|
||||
this.cargoList.forEach(ele => {
|
||||
if (ele.id == cargoId) {
|
||||
this.form.cargoName = ele.cargoName;
|
||||
this.form.hsCode = ele.hsCode;
|
||||
this.form.cargoSpec = ele.cargoSpec;
|
||||
this.form.originCountry = ele.originCountry;
|
||||
|
||||
}
|
||||
})
|
||||
},
|
||||
getCargoList() {
|
||||
let param = {};
|
||||
listCargo(param).then(response => {
|
||||
this.cargoList = response.data;
|
||||
}).catch(e => {
|
||||
});
|
||||
},
|
||||
//客户
|
||||
setCustDetail(custId) {
|
||||
this.custList.forEach(ele => {
|
||||
if (ele.id == custId) {
|
||||
this.form.custName = ele.custName;
|
||||
this.form.custCode = ele.custCode;
|
||||
this.form.custId = ele.id;
|
||||
|
||||
}
|
||||
})
|
||||
},
|
||||
getCustList() {
|
||||
let param = {};
|
||||
listCust(param).then(response => {
|
||||
this.custList = response.data;
|
||||
}).catch(e => {
|
||||
});
|
||||
},
|
||||
//仓库
|
||||
setStockDetail(stockId) {
|
||||
this.stockList.forEach(ele => {
|
||||
if (ele.id == stockId) {
|
||||
// this.form.stockId = ele.stockId;
|
||||
this.form.stockName = ele.stockName;
|
||||
this.form.stockCode = ele.stockCode;
|
||||
}
|
||||
})
|
||||
},
|
||||
// getStockList() {
|
||||
// let param = {};
|
||||
// listStock(param).then(response => {
|
||||
// this.stockList = response.data;
|
||||
// }).catch(e => {
|
||||
// });
|
||||
// },
|
||||
// 货架
|
||||
getShelfList() {
|
||||
let param = {};
|
||||
listShelf(param).then(response => {
|
||||
this.shelfList = response;
|
||||
}).catch(e => {
|
||||
this.shelfList = [];
|
||||
});
|
||||
},
|
||||
/** 查询仓库入库管理列表 */
|
||||
getList() {
|
||||
this.loading = true;
|
||||
this.queryParams.inoutType = "1";
|
||||
if(this.queryParams.queryTime){
|
||||
this.queryParams.beginDate=this.queryParams.queryTime[0];
|
||||
this.queryParams.endDate=this.queryParams.queryTime[1];
|
||||
this.queryParams.queryTime = [];
|
||||
}else{
|
||||
this.queryParams.beginDate=null;
|
||||
this.queryParams.endDate=null;
|
||||
}
|
||||
if(this.queryParams.excTime){
|
||||
this.queryParams.beginDateTwo=this.queryParams.excTime[0];
|
||||
this.queryParams.endDateTwo=this.queryParams.excTime[1];
|
||||
this.queryParams.excTime = [];
|
||||
}else{
|
||||
this.queryParams.beginDateTwo=null;
|
||||
this.queryParams.endDateTwo=null;
|
||||
}
|
||||
pageListCkcargo(this.queryParams).then(response => {
|
||||
this.ckcargoList = response.list;
|
||||
this.total = response.total;
|
||||
this.loading = false;
|
||||
}).catch(e => {
|
||||
this.loading = false;
|
||||
});
|
||||
selectTotalWt(this.queryParams).then(response => {
|
||||
this.totalWeight = response;
|
||||
}).catch(e => {
|
||||
});
|
||||
},
|
||||
// 取消按钮
|
||||
cancel() {
|
||||
this.open = false;
|
||||
this.reset();
|
||||
},
|
||||
// 表单重置
|
||||
reset() {
|
||||
this.form = {
|
||||
id: null,
|
||||
billId: null,
|
||||
billDate: null,
|
||||
billNumber: null,
|
||||
inoutType: "1",
|
||||
voyageId: null,
|
||||
voyageNo: null,
|
||||
vesselId: null,
|
||||
vesselName: null,
|
||||
cargoId: null,
|
||||
hsCode: null,
|
||||
cargoName: null,
|
||||
billNo: null,
|
||||
cargoSpec: null,
|
||||
originCountry: null,
|
||||
custId: null,
|
||||
custName: null,
|
||||
opType: null,
|
||||
tradType: null,
|
||||
cargoNum: null,
|
||||
cargoWt: null,
|
||||
cargoVol: null,
|
||||
stockId: null,
|
||||
stockCode: null,
|
||||
stockName: null,
|
||||
remark: null,
|
||||
cargoValue:null,
|
||||
customsNo:null,
|
||||
listNumber:null,
|
||||
bookNumber:null,
|
||||
};
|
||||
|
||||
this.resetForm("form");
|
||||
},
|
||||
//排序
|
||||
handleSortChange(col) {
|
||||
this.$sortBy(col, this.queryParams);
|
||||
this.getList();
|
||||
},
|
||||
/** 搜索按钮操作 */
|
||||
handleQuery() {
|
||||
this.queryParams.pageNum = 1;
|
||||
if (this.queryParams.pageSize === undefined) {
|
||||
this.queryParams.pageSize = 10;
|
||||
}
|
||||
this.getList();
|
||||
},
|
||||
/** 重置按钮操作 */
|
||||
resetQuery() {
|
||||
this.resetForm("queryForm");
|
||||
this.queryTime = [];
|
||||
this.queryTimeTwo = [];
|
||||
this.queryParams = {
|
||||
...this.queryParams,
|
||||
pageNum: 1,
|
||||
pageSize: 10
|
||||
};
|
||||
this.handleQuery();
|
||||
},
|
||||
// 多选框选中数据
|
||||
handleSelectionChange(selection) {
|
||||
this.ids = selection.map(item => item.id);
|
||||
this.names = selection.map(item => item.id);
|
||||
this.single = selection.length!==1;
|
||||
this.multiple = !selection.length;
|
||||
},
|
||||
/** 新增按钮操作 */
|
||||
handleAdd() {
|
||||
this.reset();
|
||||
this.form.inoutType="入库";
|
||||
|
||||
this.open = true;
|
||||
this.title = "添加仓库入库管理";
|
||||
},
|
||||
/** 修改按钮操作 */
|
||||
handleUpdate(row) {
|
||||
this.reset();
|
||||
|
||||
const id = row.id || this.ids;
|
||||
getCkcargo(id).then(response => {
|
||||
this.form = response.data;
|
||||
this.open = true;
|
||||
this.title = "修改仓库入库管理";
|
||||
});
|
||||
},
|
||||
/** 提交按钮 */
|
||||
submitForm() {
|
||||
this.$refs["form"].validate(valid => {
|
||||
if (valid) {
|
||||
if (this.form.id != null) {
|
||||
updateCkcargo(this.form).then(response => {
|
||||
this.$modal.msgSuccess("修改成功");
|
||||
this.open = false;
|
||||
this.getList();
|
||||
});
|
||||
} else {
|
||||
addCkcargo(this.form).then(response => {
|
||||
this.$modal.msgSuccess("新增成功");
|
||||
this.open = false;
|
||||
this.getList();
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
},
|
||||
/** 删除按钮操作 */
|
||||
handleDelete(row) {
|
||||
const ids = row.id || this.ids;
|
||||
const names = row.id || this.names;
|
||||
this.$modal.confirm('是否确认删除"' + row.billNumber + '"的数据项?').then(function() {
|
||||
return delCkcargo(ids);
|
||||
}).then(() => {
|
||||
this.getList();
|
||||
this.$modal.msgSuccess("删除成功");
|
||||
}).catch(() => {});
|
||||
},
|
||||
/** 导出按钮操作 */
|
||||
handleExport() {
|
||||
this.download('jxc/ckcargo/export', {
|
||||
...this.queryParams
|
||||
}, `仓库入库管理_${new Date().getTime()}.xlsx`)
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
Loading…
Reference in new issue