Browse Source

导出功能,修改入库时间字段

fix_bug_pro20231227
13208366016 1 year ago
parent
commit
b06af04b07
  1. 11
      src/api/distribution/distributionParcelList.js
  2. 2
      src/api/warehouse/warehouseRetentionRecord.js
  3. 33
      src/api/warehouse/warehouseUpdownGoodsLog.js
  4. 2
      src/views/distribution/inventory/distributionStockArticleDetails.vue
  5. 302
      src/views/warehouse/parcelList/distributionParcelList.vue
  6. 120
      src/views/warehouse/updownGoods/warehouseUpdownGoodsLog.vue
  7. 34
      src/views/warehouse/warehouseRetentionRecord/warehouseRetentionRecord.vue
  8. 9
      src/views/warehouse/warehouseRetentionRecord/warehousewaybillRecord.vue
  9. 38
      src/views/warehouse/warehouseStock/warehouseStock.vue

11
src/api/distribution/distributionParcelList.js

@ -129,3 +129,14 @@ export const getPackageList = params => {
},
});
};
//包件明细导出
export const $_distributionParcelList = params => {
return request({
url: '/api/logpm-distribution/distributionParcelList/export-distributionParcelList',
method: 'get',
params,
responseType: 'blob',
});
};

2
src/api/warehouse/warehouseRetentionRecord.js

@ -73,7 +73,7 @@ export const $_warehouseRetentionRecord = params => {
// 滞留导出
export const $_RetentionWarehouseRetentionRecord = params => {
return request({
url: '/api/logpm-distribution/retentionRecord/warehouseRetentionRecord/export-warehouseRetentionRecord',
url: '/api/logpm-warehouse/warehouseRetentionRecord/export-warehouseRetentionRecord',
method: 'get',
params,
responseType: 'blob',

33
src/api/warehouse/warehouseUpdownGoodsLog.js

@ -71,3 +71,36 @@ export const update = (row) => {
})
}
// 订制品导出
export const $_OrderedProducts = params => {
return request({
url: '/api/logpm-warehouse/warehouseUpdownGoodsLog/export-customized',
method: 'get',
params,
responseType: 'blob',
});
};
// 库存品导出
export const $_Inventory = params => {
return request({
url: '/api/logpm-warehouse/warehouseUpdownGoodsLog/export-stock',
method: 'get',
params,
responseType: 'blob',
});
};
// 零担订单导出
export const $_LessThanTruckload = params => {
return request({
url: '/api/logpm-distribution/distributionStockArticle/export-distributionStockArticle',
method: 'get',
params,
responseType: 'blob',
});
};

2
src/views/distribution/inventory/distributionStockArticleDetails.vue

@ -598,7 +598,7 @@ export default {
sortable: true,
},
{
prop: 'warehouseEntryTimeEnd',
prop: 'createTime',
label: '入库时间',
type: 4,
values: '',

302
src/views/warehouse/parcelList/distributionParcelList.vue

@ -5,8 +5,11 @@
<div class="avue-crud__header">
<!-- 头部左侧按钮模块 -->
<div class="avue-crud__left">
<!-- <el-button type="primary" icon="el-icon-plus" @click="handleAdd"> </el-button>-->
<!-- <el-button type="danger" icon="el-icon-delete" @click="handleDelete" plain> </el-button>-->
<el-button type="danger" icon="el-icon-bottom" @click="handleExportInfo" plain
>导出</el-button
>
<!-- <el-button type="primary" icon="el-icon-plus" @click="handleAdd"> </el-button>-->
<!-- <el-button type="danger" icon="el-icon-delete" @click="handleDelete" plain> </el-button>-->
</div>
<!-- 头部右侧按钮模块 -->
<div class="avue-crud__right">
@ -32,31 +35,35 @@
</template>
</tablecmt>
</el-row>
<el-row>
<div class="avue-crud__pagination" style="width:100%">
<el-row class="el-fy">
<div class="avue-crud__pagination" style="width: 100%">
<!-- 分页模块 -->
<el-pagination align="right"
background
@size-change="sizeChange"
@current-change="currentChange"
:current-page="page.currentPage"
:page-sizes="[30, 50,80, 120]"
:page-size="page.pageSize"
layout="total, sizes, prev, pager, next, jumper"
:total="page.total">
<el-pagination
align="right"
background
@size-change="sizeChange"
@current-change="currentChange"
:current-page="page.currentPage"
:page-sizes="[30, 50, 80, 120]"
:page-size="page.pageSize"
layout="total, sizes, prev, pager, next, jumper"
:total="page.total"
>
</el-pagination>
</div>
</el-row>
<!-- 表单模块 -->
<el-dialog :title="title"
v-model="box"
width="50%"
:before-close="beforeClose"
append-to-body>
<el-dialog
:title="title"
v-model="box"
width="50%"
:before-close="beforeClose"
append-to-body
>
<el-form :disabled="view" ref="form" :model="form" label-width="80px">
<!-- 表单字段 -->
<el-form-item label="仓库" prop="warehouse">
<el-input v-model="form.warehouse" placeholder="请输入仓库"/>
<el-input v-model="form.warehouse" placeholder="请输入仓库" />
</el-form-item>
<el-form-item label="状态" prop="conditions">
<el-select v-model="form.conditions" clearable placeholder="请选择状态">
@ -64,45 +71,48 @@
v-for="item in conditionsData"
:key="item.dictKey"
:label="item.dictValue"
:value="item.dictKey">
:value="item.dictKey"
>
</el-option>
</el-select>
</el-form-item>
<el-form-item label="包条码" prop="packetBarCode">
<el-input v-model="form.packetBarCode" placeholder="请输入包条码"/>
<el-input v-model="form.packetBarCode" placeholder="请输入包条码" />
</el-form-item>
<el-form-item label="货位信息" prop="goodsAllocation">
<el-input v-model="form.goodsAllocation" placeholder="请输入货位信息"/>
<el-input v-model="form.goodsAllocation" placeholder="请输入货位信息" />
</el-form-item>
<el-form-item label="所在托盘" prop="pallet">
<el-input v-model="form.pallet" placeholder="请输入所在托盘"/>
<el-input v-model="form.pallet" placeholder="请输入所在托盘" />
</el-form-item>
<el-form-item label="一级品" prop="firsts">
<el-input v-model="form.firsts" placeholder="请输入一级品"/>
<el-input v-model="form.firsts" placeholder="请输入一级品" />
</el-form-item>
<el-form-item label="二级品" prop="second">
<el-input v-model="form.second" placeholder="请输入二级品"/>
<el-input v-model="form.second" placeholder="请输入二级品" />
</el-form-item>
<el-form-item label="三级品" prop="thirdProduct">
<el-input v-model="form.thirdProduct" placeholder="请输入三级品"/>
<el-input v-model="form.thirdProduct" placeholder="请输入三级品" />
</el-form-item>
<el-form-item label="物料" prop="material">
<el-input v-model="form.material" placeholder="请输入物料"/>
<el-input v-model="form.material" placeholder="请输入物料" />
</el-form-item>
<el-form-item label="数量" prop="quantity">
<el-input v-model="form.quantity" placeholder="请输入数量"/>
<el-input v-model="form.quantity" placeholder="请输入数量" />
</el-form-item>
<el-form-item label="车次号" prop="trainNumber">
<el-input v-model="form.trainNumber" placeholder="请输入车次号"/>
<el-input v-model="form.trainNumber" placeholder="请输入车次号" />
</el-form-item>
<el-form-item label="在库订单ID" prop="stockArticleId">
<el-input v-model="form.stockArticleId" placeholder="请输入在库订单ID"/>
<el-input v-model="form.stockArticleId" placeholder="请输入在库订单ID" />
</el-form-item>
</el-form>
<!-- 表单按钮 -->
<template #footer>
<span v-if="!view" class="dialog-footer">
<el-button type="primary" icon="el-icon-circle-check" @click="handleSubmit"> </el-button>
<el-button type="primary" icon="el-icon-circle-check" @click="handleSubmit"
> </el-button
>
<el-button icon="el-icon-circle-close" @click="box = false"> </el-button>
</span>
</template>
@ -118,14 +128,32 @@
</template>
<script>
import { getpage, getDetail, add, update, remove } from "@/api/distribution/distributionParcelList";
import option from "@/option/distribution/distributionParcelList";
import { mapGetters } from "vuex";
import {
getpage,
getDetail,
add,
update,
remove,
$_distributionParcelList,
} from '@/api/distribution/distributionParcelList';
import option from '@/option/distribution/distributionParcelList';
import { mapGetters } from 'vuex';
import { downloadXls } from '@/utils/util';
export default {
data () {
data() {
return {
columnList: [
{
prop: '',
label: '复选框',
type: 0,
values: '',
width: '55',
checkarr: [],
fixed: true,
sortable: false,
head: false,
},
{
prop: 'warehouse',
label: '仓库',
@ -229,7 +257,7 @@ export default {
checkarr: [],
fixed: false,
sortable: true,
isshowSummary:true,
isshowSummary: true,
},
{
prop: 'trainNumber',
@ -252,7 +280,7 @@ export default {
sortable: true,
},
],
drawerShow:false,
drawerShow: false,
height: 0,
//
title: '',
@ -270,7 +298,7 @@ export default {
page: {
currentPage: 1,
pageSize: 30,
total: 40
total: 40,
},
//
form: {},
@ -280,18 +308,18 @@ export default {
option: option,
//
data: [],
}
};
},
mounted () {
mounted() {
this.init();
this.onLoad(this.page);
/**
* 初始化获取本地缓存的编辑隐藏的列表
* 固定搭配不能更改
*/
let checkListnewarr = this.$functions.getStorage(window.location.pathname+'checkList');
let flexListnewarr = this.$functions.getStorage(window.location.pathname+'flexList');
let sortlistnewarr = this.$functions.getStorage(window.location.pathname+'sortlist');
let checkListnewarr = this.$functions.getStorage(window.location.pathname + 'checkList');
let flexListnewarr = this.$functions.getStorage(window.location.pathname + 'flexList');
let sortlistnewarr = this.$functions.getStorage(window.location.pathname + 'sortlist');
if (checkListnewarr) {
this.columnList.map(item => {
item.head = false;
@ -303,14 +331,14 @@ export default {
}
});
});
}else{
let arr=[]
} else {
let arr = [];
this.columnList.map(item => {
if(item.head){
arr.push(item.label)
if (item.head) {
arr.push(item.label);
}
});
this.$functions.setStorage(window.location.pathname+'checkList',arr)
this.$functions.setStorage(window.location.pathname + 'checkList', arr);
}
if (flexListnewarr) {
this.columnList.map(item => {
@ -319,22 +347,22 @@ export default {
flexListnewarr.map(ite => {
this.columnList.map(item => {
if (ite == item.label) {
if(item.type==6){
if (item.type == 6) {
item.fixed = 'right';
}else{
} else {
item.fixed = true;
}
}
});
});
}else{
let arr=[]
} else {
let arr = [];
this.columnList.map(item => {
if(item.fixed){
arr.push(item.label)
if (item.fixed) {
arr.push(item.label);
}
});
this.$functions.setStorage(window.location.pathname+'flexList',arr)
this.$functions.setStorage(window.location.pathname + 'flexList', arr);
}
if (sortlistnewarr) {
this.columnList.map(item => {
@ -347,75 +375,93 @@ export default {
}
});
});
}else{
let arr=[]
} else {
let arr = [];
this.columnList.map(item => {
if(item.sortable){
arr.push(item.label)
if (item.sortable) {
arr.push(item.label);
}
});
this.$functions.setStorage(window.location.pathname+'sortlist',arr)
this.$functions.setStorage(window.location.pathname + 'sortlist', arr);
}
},
computed: {
...mapGetters(["permission"]),
ids () {
...mapGetters(['permission']),
ids() {
let ids = [];
this.selectionList.forEach(ele => {
ids.push(ele.id);
});
return ids.join(",");
}
return ids.join(',');
},
},
methods: {
handleExportInfo() {
let row = {};
//
if (this.query) {
for (let prop in this.query) {
row[prop] = this.query[prop];
}
}
if (!!this.ids) {
row.ids = this.ids;
} else {
row.ids = '';
}
$_distributionParcelList(row).then(res => {
console.log(res.data);
downloadXls(res.data, '包件明细.xlsx');
});
},
inputsc(index, row) {
this.query[row.prop] = index;
console.log(this.query);
this.onLoad(this.page);
},
showdrawer(value){
this.drawerShow=value
showdrawer(value) {
this.drawerShow = value;
},
/**
* 弹窗的勾选回调用于更改头部数组
* 固定搭配只需要更换 columnList
*/
setnewcolum(newarr, headarr,type) {
setnewcolum(newarr, headarr, type) {
// console.log(newarr,'+++++++++++')
if(type==1){
if (type == 1) {
this.columnList = newarr;
this.$functions.setStorage(window.location.pathname+'checkList', headarr);
}else if(type==2){
this.$functions.setStorage(window.location.pathname + 'checkList', headarr);
} else if (type == 2) {
this.columnList = newarr;
this.$functions.setStorage(window.location.pathname+'flexList', headarr);
}else if(type==3){
this.$functions.setStorage(window.location.pathname + 'flexList', headarr);
} else if (type == 3) {
this.columnList = newarr;
this.$functions.setStorage(window.location.pathname+'sortlist', headarr);
this.$functions.setStorage(window.location.pathname + 'sortlist', headarr);
}
},
init () {
init() {
this.height = this.setPx(document.body.clientHeight - 340);
},
searchHide () {
searchHide() {
this.search = !this.search;
},
searchChange () {
searchChange() {
this.onLoad(this.page);
},
searchReset () {
searchReset() {
this.query = {};
this.page.currentPage = 1;
this.onLoad(this.page);
},
handleSubmit () {
handleSubmit() {
if (!this.form.id) {
add(this.form).then(() => {
this.box = false;
this.onLoad(this.page);
this.$message({
type: "success",
message: "操作成功!"
type: 'success',
message: '操作成功!',
});
});
} else {
@ -423,41 +469,41 @@ export default {
this.box = false;
this.onLoad(this.page);
this.$message({
type: "success",
message: "操作成功!"
type: 'success',
message: '操作成功!',
});
})
});
}
},
handleAdd () {
this.title = '新增'
this.form = {}
this.box = true
handleAdd() {
this.title = '新增';
this.form = {};
this.box = true;
},
handleEdit (row) {
this.title = '编辑'
this.box = true
handleEdit(row) {
this.title = '编辑';
this.box = true;
getDetail(row.id).then(res => {
this.form = res.data.data;
});
},
handleView (row) {
this.title = '查看'
handleView(row) {
this.title = '查看';
this.view = true;
this.box = true;
getDetail(row.id).then(res => {
this.form = res.data.data;
});
},
handleDelete () {
handleDelete() {
if (this.selectionList.length === 0) {
this.$message.warning("请选择至少一条数据");
this.$message.warning('请选择至少一条数据');
return;
}
this.$confirm("确定将选择数据删除?", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
this.$confirm('确定将选择数据删除?', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning',
})
.then(() => {
return remove(this.ids);
@ -466,16 +512,16 @@ export default {
this.selectionClear();
this.onLoad(this.page);
this.$message({
type: "success",
message: "操作成功!"
type: 'success',
message: '操作成功!',
});
});
},
rowDel (row) {
this.$confirm("确定将选择数据删除?", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
rowDel(row) {
this.$confirm('确定将选择数据删除?', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning',
})
.then(() => {
return remove(row.id);
@ -483,31 +529,31 @@ export default {
.then(() => {
this.onLoad(this.page);
this.$message({
type: "success",
message: "操作成功!"
type: 'success',
message: '操作成功!',
});
});
},
beforeClose (done) {
done()
beforeClose(done) {
done();
this.form = {};
this.view = false;
},
selectionChange (list) {
selectionChange(list) {
this.selectionList = list;
},
selectionClear () {
selectionClear() {
this.selectionList = [];
},
currentChange (currentPage) {
currentChange(currentPage) {
this.page.currentPage = currentPage;
this.onLoad(this.page);
},
sizeChange (pageSize) {
sizeChange(pageSize) {
this.page.pageSize = pageSize;
this.onLoad(this.page);
},
onLoad (page, params = {}) {
onLoad(page, params = {}) {
this.loading = true;
getpage(page.currentPage, page.pageSize, Object.assign(params, this.query)).then(res => {
const data = res.data.data;
@ -516,7 +562,27 @@ export default {
this.loading = false;
this.selectionClear();
});
}
}
},
},
};
</script>
<style lang="scss" scoped>
:deep(.avue-crud) {
display: flex;
height: 100%;
flex-direction: column;
}
:deep(.el-card__body) {
height: 100%;
}
:deep(.el-card) {
height: 100%;
display: flex;
flex-direction: column;
}
.el-fy {
flex: 1;
display: flex;
align-items: center;
}
</style>

120
src/views/warehouse/updownGoods/warehouseUpdownGoodsLog.vue

@ -61,7 +61,11 @@
<el-row>
<div class="avue-crud__header">
<!-- 头部左侧按钮模块 -->
<div class="avue-crud__left"></div>
<div class="avue-crud__left">
<el-button type="danger" icon="el-icon-bottom" @click="handleExportInfo" plain
>导出
</el-button>
</div>
<!-- 头部右侧按钮模块 -->
<div class="avue-crud__right">
<el-button icon="el-icon-refresh" @click="searchChange" circle></el-button>
@ -70,7 +74,7 @@
</div>
</el-row>
<el-tabs type="border-card">
<el-tabs type="border-card" @tab-click="tabClick">
<el-tab-pane label="订制品">
<el-row>
<!-- 列表模块 -->
@ -84,10 +88,10 @@
@selectCheck="selectsc"
@selection="selectionChange"
>
<!-- <template #default="slotProps">-->
<!-- <el-button type="primary" text icon="el-icon-view" @click="handleView(slotProps.scope)">查看</el-button>-->
<!-- <el-button type="primary" text icon="el-icon-edit" @click="handleCallDeliveryOwn(slotProps.scope)">修改客户信息</el-button>-->
<!-- </template>-->
<!-- <template #default="slotProps">
<el-button type="primary" text icon="el-icon-view" @click="handleView(slotProps.scope)">查看</el-button>
<el-button type="primary" text icon="el-icon-edit" @click="handleCallDeliveryOwn(slotProps.scope)">修改客户信息</el-button>
</template> -->
</tablecmt>
</el-row>
<el-row>
@ -203,13 +207,17 @@ import {
remove,
getinventorypage,
gettruckloadpage,
$_OrderedProducts,
$_Inventory,
$_LessThanTruckload,
} from '@/api/warehouse/warehouseUpdownGoodsLog';
import option from '@/option/warehouse/warehouseUpdownGoodsLog';
import { mapGetters } from 'vuex';
import { downloadXls } from '@/utils/util';
export default {
data() {
return {
tabActive: 1, //,
columnList: [
// {
// prop: '',
@ -220,6 +228,18 @@ export default {
// checkarr: [],
// fixed: true,
// },
{
prop: '',
label: '复选框',
type: 0,
values: '',
width: '55',
checkarr: [],
fixed: true,
sortable: false,
head: false,
},
{
prop: 'warehouseName',
label: '货物仓库',
@ -357,6 +377,18 @@ export default {
// checkarr: [],
// fixed: true,
// },
{
prop: '',
label: '复选框',
type: 0,
values: '',
width: '55',
checkarr: [],
fixed: true,
sortable: false,
head: false,
},
{
prop: 'materialCode',
label: '物料编号',
@ -483,6 +515,17 @@ export default {
// ...
],
columnList2: [
{
prop: '',
label: '复选框',
type: 0,
values: '',
width: '55',
checkarr: [],
fixed: true,
sortable: false,
head: false,
},
{
prop: 'orderCode',
label: '订单号',
@ -734,12 +777,71 @@ export default {
ids() {
let ids = [];
this.selectionList.forEach(ele => {
ids.push(ele.id);
// ID
if (ele.id) {
ids.push(ele.id);
}
});
return ids.join(',');
},
},
methods: {
//
handleExportInfo() {
let row = {};
//
// query: {},
if (this.query) {
for (let prop in this.query) {
row[prop] = this.query[prop];
}
}
if (this.ids) {
row.ids = this.ids;
} else {
row.ids = '';
}
//
const exportData = (api, filename) => {
api(row).then(res => {
console.log(res.data);
downloadXls(res.data, filename);
});
};
//
switch (this.tabActive) {
case 1:
exportData($_OrderedProducts, '定制品.xlsx');
break;
case 2:
exportData($_Inventory, '库存品.xlsx');
break;
case 3:
exportData($_LessThanTruckload, '零担订单.xlsx');
break;
default:
break;
}
},
//
tabClick(val) {
console.log(this.ids);
console.log(this.selectionList);
const options = {
订制品: 1,
库存品: 2,
零担订单: 3,
};
for (const label in options) {
if (val.props.label == label) {
console.log(`当前是${label}`);
this.tabActive = options[label];
break;
}
}
},
//
searchChange() {
this.onLoad(this.page);
@ -881,7 +983,7 @@ export default {
.el-btn {
margin-right: 0;
}
.fr-fo{
.fr-fo {
width: 100%;
display: flex;
justify-content: space-between;

34
src/views/warehouse/warehouseRetentionRecord/warehouseRetentionRecord.vue

@ -1,16 +1,16 @@
<template>
<basic-container>
<el-row>
<div class="avue-crud__header">
<!-- <el-row> -->
<!-- <div class="avue-crud__header"> -->
<!-- 头部左侧按钮模块 -->
<div class="avue-crud__left">
<!-- <div class="avue-crud__left">
<el-button type="danger" icon="el-icon-bottom" @click="handleExportInfo" plain
>导出
</el-button>
>导出 -->
<!-- </el-button>
</div>
</div>
</el-row>
</div> -->
<!-- </el-row> -->
<avue-crud :option="option"
v-model:search="search"
v-model:page="page"
@ -245,5 +245,23 @@
};
</script>
<style>
<style lang='scss' scoped>
:deep(.avue-crud) {
display: flex;
height: 100%;
flex-direction: column;
}
:deep(.el-card__body) {
height: 100%;
}
:deep(.el-card) {
height: 100%;
display: flex;
flex-direction: column;
}
.el-fy {
flex: 1;
display: flex;
align-items: center;
}
</style>

9
src/views/warehouse/warehouseRetentionRecord/warehousewaybillRecord.vue

@ -1,16 +1,15 @@
<template>
<basic-container>
<el-row>
<div class="avue-crud__header">
<!-- <el-row>
<div class="avue-crud__header"> -->
<!-- 头部左侧按钮模块 -->
<div class="avue-crud__left">
<!-- <div class="avue-crud__left">
<el-button type="danger" icon="el-icon-bottom" @click="handleExportInfo" plain
>导出
</el-button>
</div>
<div class="avue-crud__left"></div>
</div>
</el-row>
</el-row> -->
<avue-crud
:option="option"
v-model:search="search"

38
src/views/warehouse/warehouseStock/warehouseStock.vue

@ -36,7 +36,7 @@
<!-- </template>-->
</tablecmt>
</el-row>
<el-row>
<el-row class="el-fy">
<div class="avue-crud__pagination" style="width: 100%">
<!-- 分页模块 -->
<el-pagination
@ -65,14 +65,21 @@
</template>
<script>
import { getList, getDetail, add, update, remove,$_warehouseStock } from '@/api/warehouse/warehouseStock';
import {
getList,
getDetail,
add,
update,
remove,
$_warehouseStock,
} from '@/api/warehouse/warehouseStock';
import option from '@/option/warehouse/warehouseStock';
import { mapGetters } from 'vuex';
import { downloadXls } from '@/utils/util';
export default {
data() {
return {
drawerShow: false,
drawerShow: false,
columnList: [
{
prop: '',
@ -85,7 +92,7 @@ export default {
sortable: false,
head: false,
},
{
prop: 'nodeName',
label: '节点名称',
@ -600,3 +607,24 @@ export default {
},
};
</script>
<style scoped lang="scss">
:deep(.avue-crud) {
display: flex;
height: 100%;
flex-direction: column;
}
:deep(.el-card__body) {
height: 100%;
}
:deep(.el-card) {
height: 100%;
display: flex;
flex-direction: column;
}
.el-fy {
flex: 1;
display: flex;
align-items: center;
}
</style>

Loading…
Cancel
Save