Browse Source

2023-3-29

销售导出
入库查询、导出
master
guoxing 2 years ago
parent
commit
ee78f156d7
  1. 29
      supervise-customer-ui/src/api/query/outBound.js
  2. 15
      supervise-customer-ui/src/api/query/sales.js
  3. 1
      supervise-customer-ui/src/api/supervise/commodityFile.js
  4. 2
      supervise-customer-ui/src/router/modules/codemenu.js
  5. 22
      supervise-customer-ui/src/utils/request.js
  6. 180
      supervise-customer-ui/src/views/query/inAndOutBound.vue
  7. 90
      supervise-customer-ui/src/views/query/sale.vue
  8. 14
      supervise-customer-ui/src/views/supervise/commodityFile/commodity/commodityManagementInfo.vue

29
supervise-customer-ui/src/api/query/outBound.js

@ -0,0 +1,29 @@
import request from '@/utils/request'
// 供应商查询
export default {
// 查询分页列表
listPage: function(params) {
return request({
baseURL: '/api',
url: '/customer/v1/gdinstoragegd/listPage',
method: 'post',
data: params,
headers: {
'Content-Type': 'application/json'
}
})
},
exportExcel: function(params) {
return request({
baseURL: '/api',
url: '/customer/v1/gdinstoragegd/exportExcel',
method: 'post',
responseType: 'blob', // 表明返回服务器返回的数据类型
data: params,
headers: {
'Content-Type': 'application/json'
}
})
},
}

15
supervise-customer-ui/src/api/query/sales.js

@ -14,4 +14,17 @@ export default {
} }
}) })
}, },
}
exportExcel: function(params) {
return request({
baseURL: '/api',
url: '/customer/v1/gdsales/exportExcel',
method: 'post',
responseType: 'blob', // 表明返回服务器返回的数据类型
data: params,
headers: {
'Content-Type': 'application/json'
}
})
},
}

1
supervise-customer-ui/src/api/supervise/commodityFile.js

@ -101,6 +101,7 @@ export default {
// 商品档案 保存新增记录 // 商品档案 保存新增记录
saveCommodity: function(params) { saveCommodity: function(params) {
return request({ return request({
baseURL: '/api',
url: '/customer/v1/productinformation/save', url: '/customer/v1/productinformation/save',
method: 'post', method: 'post',
data: params, data: params,

2
supervise-customer-ui/src/router/modules/codemenu.js

@ -192,7 +192,7 @@ const codemenu = [{
component: () => import('@/views/query/inAndOutBound.vue'), component: () => import('@/views/query/inAndOutBound.vue'),
name: 'manufacturerPreference', name: 'manufacturerPreference',
meta: { meta: {
title: '入库查询', title: '入库查询',
noCache: true noCache: true
} }
},{ },{

22
supervise-customer-ui/src/utils/request.js

@ -1,7 +1,13 @@
import axios from 'axios' import axios from 'axios'
import { MessageBox, Message } from 'element-ui' import {
MessageBox,
Message
} from 'element-ui'
import store from '@/store' import store from '@/store'
import { getToken, getStorage } from '@/utils/auth' import {
getToken,
getStorage
} from '@/utils/auth'
// create an axios instance // create an axios instance
const service = axios.create({ const service = axios.create({
@ -52,17 +58,19 @@ service.interceptors.response.use(
const res = response.data const res = response.data
const statusCode = response.status const statusCode = response.status
console.log("response>>>", response)
// if the custom code is not 20000, it is judged as an error. // if the custom code is not 20000, it is judged as an error.
if (statusCode !== 200) { if (statusCode !== 200) {
Message({ Message({
message: res.msg || response.message || 'Error', message: res.msg || response.message || 'Error11111111111111111',
type: 'error', type: 'error',
showClose: true, showClose: true,
duration: 5 * 1000 duration: 5 * 1000
}) })
// 50008: Illegal token; 50012: Other clients logged in; 50014: Token expired; // 50008: Illegal token; 50012: Other clients logged in; 50014: Token expired;
if (statusCode === 401 || res.code === '5000' || res.code === 5000 || res.code === 50012 || res.code === 50014) { if (statusCode === 401 || res.code === '5000' || res.code === 5000 || res.code === 50012 || res.code ===
50014) {
// to re-login // to re-login
MessageBox.confirm('登录状态已过期,您可以继续留在该页面,或者重新登录', '系统提示', { MessageBox.confirm('登录状态已过期,您可以继续留在该页面,或者重新登录', '系统提示', {
confirmButtonText: '重新登录', confirmButtonText: '重新登录',
@ -77,9 +85,9 @@ service.interceptors.response.use(
} }
return Promise.reject(new Error(res.message || 'Error')) return Promise.reject(new Error(res.message || 'Error'))
} else { } else {
if (!res.success) { if (!res.success && res.success !== null && res.success !== undefined) {
Message({ Message({
message: res.msg || 'Error', message: res.msg || 'Error2222222222222222',
type: 'error', type: 'error',
showClose: true, showClose: true,
duration: 5 * 1000 duration: 5 * 1000
@ -100,4 +108,4 @@ service.interceptors.response.use(
} }
) )
export default service export default service

180
supervise-customer-ui/src/views/query/inAndOutBound.vue

@ -2,7 +2,7 @@
<div class="app-container"> <div class="app-container">
<div style="margin-left:16px;"> <div style="margin-left:16px;">
<div v-show="viewState == 1"> <div v-show="viewState == 1">
<button-bar ref="btnbar" view-title="入库查询" :btndisabled="btndisabled" @btnhandle="btnHandle" /> <button-bar ref="btnbar" view-title="入库查询" :btndisabled="btndisabled" @btnhandle="btnHandle" />
<div class="main-content"> <div class="main-content">
<div class="searchcon"> <div class="searchcon">
<el-button size="small" class="searchbtn" @click="clicksearchShow"> <el-button size="small" class="searchbtn" @click="clicksearchShow">
@ -11,27 +11,18 @@
<div v-show="isSearchShow" class="search"> <div v-show="isSearchShow" class="search">
<el-form ref="queryParams" :model="queryParams" :inline="true" class="tab-header"> <el-form ref="queryParams" :model="queryParams" :inline="true" class="tab-header">
<el-form-item label="仓库/门店"> <el-form-item label="仓库/门店">
<el-input v-model="queryParams.params.orderId" placeholder="" clearable /> <el-input v-model="queryParams.params.colc2" placeholder="" clearable />
</el-form-item> </el-form-item>
<el-form-item label="单据类型"> <el-form-item label="商品名称">
<el-input v-model="queryParams.params.supplierName" placeholder="" clearable /> <el-input v-model="queryParams.params.coli8" placeholder="" clearable />
</el-form-item> </el-form-item>
<el-form-item label="起始日期"> <el-form-item label="起始日期">
<el-date-picker v-model="queryParams.params.orderStartDate" type="date" clearable <el-date-picker v-model="queryParams.params.startTime" type="date" clearable
value-format="yyyy-MM-dd" placeholder="选择日期" /> value-format="yyyy-MM-dd" placeholder="选择日期" />
<span style="padding: 0 8px"></span> <span style="padding: 0 8px"></span>
<el-date-picker v-model="queryParams.params.orderEndDate" type="date" clearable <el-date-picker v-model="queryParams.params.endTime" type="date" clearable
value-format="yyyy-MM-dd" placeholder="选择日期" /> value-format="yyyy-MM-dd" placeholder="选择日期" />
</el-form-item> </el-form-item>
<el-form-item label="商品名称">
<el-input v-model="queryParams.params.supplierName" placeholder="" clearable />
</el-form-item>
<el-form-item label="商品编码">
<el-input v-model="queryParams.params.supplierName" placeholder="" clearable />
</el-form-item>
<el-form-item label="商品类别">
<el-input v-model="queryParams.params.supplierName" placeholder="" clearable />
</el-form-item>
</el-form> </el-form>
<div class="btn" style="text-align: center;"> <div class="btn" style="text-align: center;">
<el-button type="primary" size="small" icon="el-icon-search" @click="dosearch">查询</el-button> <el-button type="primary" size="small" icon="el-icon-search" @click="dosearch">查询</el-button>
@ -43,28 +34,27 @@
<!-- Start 项目列表头部 --> <!-- Start 项目列表头部 -->
<div class="listtop" <div class="listtop"
style="display: flex;flex-direction: row;justify-content: space-between;align-items: center;"> style="display: flex;flex-direction: row;justify-content: space-between;align-items: center;">
<div class="tit">订单明细表</div> <div class="tit">入库明细表</div>
<div> <!-- <div>
<span style="padding-right: 20px">商品种类数量{{pages.num}}</span> <span style="padding-right: 20px">商品种类数量{{pages.num}}</span>
<span style="padding-right: 20px">订单金额合计{{pages.totalPrice}}</span> <span style="padding-right: 20px">订单金额合计{{pages.totalPrice}}</span>
<span style="padding-right: 20px">到货货值合计{{pages.arrivalPrice}}</span> <span style="padding-right: 20px">到货货值合计{{pages.arrivalPrice}}</span>
<span style="padding-right: 20px">在途货值合计{{pages.inTransitPrice}}</span> <span style="padding-right: 20px">在途货值合计{{pages.inTransitPrice}}</span>
</div> </div> -->
</div> </div>
<div style="margin-top: 30px;"> <div style="margin-top: 30px;">
<el-table v-loading="tableLoading" :data="dataList" border style="width: 100%"> <el-table v-loading="tableLoading" :data="dataList" border style="width: 100%">
<el-table-column width="60" label="序号" type="index" :index="indexMethod" align="center" /> <el-table-column width="60" label="序号" type="index" :index="indexMethod" align="center" />
<el-table-column prop="goodsStatus" label="货物状态" align="center" /> <el-table-column prop="colc2" width="240" label="仓库/门店名称" align="center" />
<el-table-column prop="orderId" label="订单编号" align="center" /> <el-table-column prop="cold3" width="200"label="收货时间" align="center" />
<el-table-column prop="supplierName" label="供应商名称" align="center" /> <el-table-column prop="coli8" label="商品名称" align="center" />
<el-table-column prop="orderPrice" label="订单金额" align="center" /> <el-table-column prop="coll11" width="120" label="规格" align="center" />
<el-table-column prop="arrivalPrice" label="到货货值" align="center" /> <el-table-column prop="colm12" width="120" label="类别编号" align="center" />
<el-table-column prop="inTransitPrice" label="在途货值" align="center" /> <el-table-column prop="coln13" width="120"label="类别名称" align="center" />
<el-table-column prop="orderDate" label="订单日期" align="center" /> <el-table-column prop="colr17" width="120" label="数量" align="center" />
<el-table-column prop="arrivalDate" label="到货日期" align="center" />
</el-table> </el-table>
</div> </div>
@ -83,6 +73,7 @@
</template> </template>
<script> <script>
import req from '@/api/query/outBound'
import ButtonBar from '@/components/ButtonBar' import ButtonBar from '@/components/ButtonBar'
export default { export default {
components: { components: {
@ -95,56 +86,13 @@
isSearchShow: false, isSearchShow: false,
searchxianshitit: '显示查询条件', searchxianshitit: '显示查询条件',
tableLoading: false, tableLoading: false,
pages: { btnList: [{
num: 2, type: 'success',
totalPrice: 123546516, size: 'small',
arrivalPrice: 2, icon: 'export',
inTransitPrice: 1985616 btnKey: 'doBuild',
}, btnLabel: '导出'
audit_list: [{ }, {
dictKey: 0,
dictValue: '全部'
},
{
dictKey: 1,
dictValue: '待审核'
},
{
dictKey: 2,
dictValue: '通过'
},
{
dictKey: 3,
dictValue: '拒绝'
}
],
goods_list: [{
dictKey: 0,
dictValue: '全部'
},
{
dictKey: 1,
dictValue: '在途'
},
{
dictKey: 2,
dictValue: '到货'
}
],
query_list: [{
dictKey: 0,
dictValue: '全部'
},
{
dictKey: 1,
dictValue: '按供应商'
},
{
dictKey: 2,
dictValue: '按订单'
}
],
btnList: [{
type: 'info', type: 'info',
size: 'small', size: 'small',
icon: 'cross', icon: 'cross',
@ -156,34 +104,20 @@
size: 10, size: 10,
total: 0, total: 0,
params: { params: {
orderId: '', colc2: '',
supplierName: '', coli8: '',
auditStatus: '', startTime: '',
goodsStatus: '', endTime: '',
orderStartDate: '',
orderEndDate: '',
arrivalStartDate: '',
arrivalEndDate: '',
queryType: ''
} }
}, },
dataList: [{ dataList: [ ]
goodsStatus: '全部',
orderId: 'S4ZR02111003',
supplierName: '[6143301]石家庄舶来品商贸有限公司',
orderPrice: '120130',
arrivalPrice: '0',
inTransitPrice: '120130',
orderDate: '2022-11-26',
arrivalDate: '2022-11-26',
}, ]
} }
}, },
mounted() { mounted() {
this.$refs['btnbar'].setButtonList(this.btnList) this.$refs['btnbar'].setButtonList(this.btnList)
}, },
created() { created() {
// this.loadList() this.loadList()
}, },
methods: { methods: {
// //
@ -197,6 +131,9 @@
}, },
btnHandle(btnKey) { btnHandle(btnKey) {
switch (btnKey) { switch (btnKey) {
case 'doBuild':
this.doBuild()
break
case 'doClose': case 'doClose':
this.doClose() this.doClose()
break break
@ -237,19 +174,52 @@
size: 10, size: 10,
total: 0, total: 0,
params: { params: {
orderId: '', colc2: '',
supplierName: '', coli8: '',
auditStatus: '', startTime: '',
goodsStatus: '', endTime: '',
orderStartDate: '',
orderEndDate: '',
arrivalStartDate: '',
arrivalEndDate: '',
queryType: ''
} }
} }
this.loadList() this.loadList()
}, },
//
doBuild() {
if (this.dataList.length == 0) {
this.$message({
message: '暂无数据可导出!',
type: 'warning',
duration: 1000
});
return
}
const loading = this.$loading({
lock: true,
text: 'Loading',
spinner: 'el-icon-loading',
background: 'rgba(0, 0, 0, 0.7)'
})
req.exportExcel(this.queryParams).then((resp) => {
loading.close()
const blob = new Blob([resp], {
type: 'application/vnd.ms-excel;charset=UTF-8'
})
const fileName = '入库列表' + '.xls'
const elink = document.createElement('a')
elink.download = fileName
elink.style.display = 'nonde'
elink.href = URL.createObjectURL(blob)
document.body.appendChild(elink)
elink.click()
URL.revokeObjectURL(elink.href)
document.body.removeChild(elink)
}).catch(() => {
loading.close()
})
},
doClose() { doClose() {
this.$store.dispatch('tagsView/delView', this.$route) this.$store.dispatch('tagsView/delView', this.$route)
this.$router.go(-1) this.$router.go(-1)

90
supervise-customer-ui/src/views/query/sale.vue

@ -16,15 +16,15 @@
<el-form-item label="商品名称"> <el-form-item label="商品名称">
<el-input v-model="queryParams.params.prodName" placeholder="" clearable /> <el-input v-model="queryParams.params.prodName" placeholder="" clearable />
</el-form-item> </el-form-item>
<!-- <el-form-item label="销售渠道"> <!-- <el-form-item label="销售渠道">
<el-input v-model="queryParams.params.storeCode" placeholder="" clearable /> <el-input v-model="queryParams.params.storeCode" placeholder="" clearable />
</el-form-item> --> </el-form-item> -->
<el-form-item label="销售日期"> <el-form-item label="销售日期">
<el-date-picker v-model="queryParams.params.startTime" type="date" clearable <el-date-picker v-model="queryParams.params.startTime" type="date" clearable value-format="yyyy-MM-dd"
value-format="yyyy-MM-dd" placeholder="选择日期" /> placeholder="选择日期" />
<span style="padding: 0 8px"></span> <span style="padding: 0 8px"></span>
<el-date-picker v-model="queryParams.params.endTime" type="date" clearable <el-date-picker v-model="queryParams.params.endTime" type="date" clearable value-format="yyyy-MM-dd"
value-format="yyyy-MM-dd" placeholder="选择日期" /> placeholder="选择日期" />
</el-form-item> </el-form-item>
</el-form> </el-form>
<div class="btn" style="text-align: center;"> <div class="btn" style="text-align: center;">
@ -51,12 +51,13 @@
<div style="margin-top: 30px;"> <div style="margin-top: 30px;">
<el-table v-loading="tableLoading" :data="dataList" border style="width: 100%"> <el-table v-loading="tableLoading" :data="dataList" border style="width: 100%">
<el-table-column width="60" label="序号" type="index" :index="indexMethod" align="center" /> <el-table-column width="60" label="序号" type="index" :index="indexMethod" align="center" />
<el-table-column prop="orderType" width="120" label="订单类型" align="center" /> <el-table-column prop="orderType" width="100" label="订单类型" align="center" />
<el-table-column prop="prodCode" width="120" label="商品编码" align="center" /> <el-table-column prop="prodCode" width="140" label="商品编码" align="center" />
<el-table-column prop="prodName" label="商品名称" align="center" /> <el-table-column prop="prodName" label="商品名称" align="center" />
<el-table-column prop="brandCode" width="100" label="品牌代码" align="center" /> <el-table-column prop="brandCode" width="100" label="品牌代码" align="center" />
<el-table-column prop="brandName" width="180" label="品牌名称" align="center" /> <el-table-column prop="brandName" width="180" label="品牌名称" align="center" />
<el-table-column prop="saleNum" width="100" label="销售数量" align="center" /> <el-table-column prop="saleNum" width="100" label="销售数量" align="center" />
<el-table-column prop="total" width="100" label="销售总价" align="center" />
<el-table-column prop="storeName" width="200" label="销售渠道" align="center" /> <el-table-column prop="storeName" width="200" label="销售渠道" align="center" />
<el-table-column prop="dataDate" width="150" label="销售日期" align="center" /> <el-table-column prop="dataDate" width="150" label="销售日期" align="center" />
</el-table> </el-table>
@ -110,9 +111,9 @@
params: { params: {
prodCode: '', // prodCode: '', //
prodName: '', // prodName: '', //
storeCode: '',// storeCode: '', //
brandCode: '',// brandCode: '', //
brandName: '',// brandName: '', //
startTime: '', startTime: '',
endTime: '', endTime: '',
} }
@ -181,39 +182,54 @@
size: 10, size: 10,
total: 0, total: 0,
params: { params: {
prodCode: '', // prodCode: '', //
prodName: '', // prodName: '', //
storeCode: '',// storeCode: '', //
brandCode: '',// brandCode: '', //
brandName: '',// brandName: '', //
startTime: '', startTime: '',
endTime: '', endTime: '',
} }
} }
this.loadList() this.loadList()
}, },
// //
exportExcel() { doBuild() {
// axios({
// method: 'get', if (this.dataList.length == 0) {
// url: 'api/system/v1/systemlogs/exportLogExcel', this.$message({
// params: this.page, message: '暂无数据可导出!',
// responseType: 'blob', type: 'warning',
// headers:{'token': getStorage()} duration: 1000
// }).then(response => { });
// let blob = new Blob([response.data], {type:"application/vnd.ms-excel"}); return
// if (!!window.ActiveXObject || "ActiveXObject" in window) { }
// window.navigator.msSaveOrOpenBlob(blob, '');
// } else { const loading = this.$loading({
// let link = document.createElement('a'); lock: true,
// link.href = window.URL.createObjectURL(blob); text: 'Loading',
// link.download = ""; spinner: 'el-icon-loading',
// link.click(); background: 'rgba(0, 0, 0, 0.7)'
// } })
// }).catch((error) => {
req.exportExcel(this.queryParams).then((resp) => {
loading.close()
const blob = new Blob([resp], {
type: 'application/vnd.ms-excel;charset=UTF-8'
})
const fileName = '销售列表' + '.xls'
const elink = document.createElement('a')
elink.download = fileName
elink.style.display = 'nonde'
elink.href = URL.createObjectURL(blob)
document.body.appendChild(elink)
elink.click()
URL.revokeObjectURL(elink.href)
document.body.removeChild(elink)
}).catch(() => {
loading.close()
})
// })
// }
}, },
doClose() { doClose() {
this.$store.dispatch('tagsView/delView', this.$route) this.$store.dispatch('tagsView/delView', this.$route)

14
supervise-customer-ui/src/views/supervise/commodityFile/commodity/commodityManagementInfo.vue

@ -47,18 +47,18 @@
<el-table-column fixed width="60" label="序号" type="index" :index="indexMethod" align="center" /> <el-table-column fixed width="60" label="序号" type="index" :index="indexMethod" align="center" />
<el-table-column prop="code" label="商品代码" align="center" width="110"/> <el-table-column prop="code" label="商品代码" align="center" width="110"/>
<el-table-column prop="name" label="商品名称" align="center" width="110"> <el-table-column prop="name" label="商品名称" align="center">
<!-- <template slot-scope="scope"> <!-- <template slot-scope="scope">
<span class="bluezi" @click="toInfo(scope.row)">{{ scope.row.codeUnified }}</span> <span class="bluezi" @click="toInfo(scope.row)">{{ scope.row.codeUnified }}</span>
</template> --> </template> -->
</el-table-column> </el-table-column>
<el-table-column prop="category" label="分类" align="center" /> <el-table-column prop="category" label="分类" width="110" align="center" />
<el-table-column prop="brand" label="品牌" align="center" width="100" /> <el-table-column prop="brand" label="品牌" align="center" width="100" />
<el-table-column prop="newestPurchasePrice" label="进货单价" align="center" width="110" /> <el-table-column prop="newestPurchasePrice" label="进货单价" align="center" width="100" />
<el-table-column prop="description" label="规格" align="center" /> <el-table-column prop="description" label="规格" width="110"align="center" />
<el-table-column prop="unit" label="单位" align="center" /> <el-table-column prop="unit" label="单位" align="center" width="80" />
<el-table-column prop="manufacturer" label="生成厂家" align="center" /> <el-table-column prop="manufacturer" label="生成厂家" width="150"align="center" />
<el-table-column prop="secondCode" label="第二代码" align="center" /> <el-table-column prop="secondCode" label="第二代码" width="150"align="center" />
<!-- <el-table-column prop="address" label="审核" align="center" /> --> <!-- <el-table-column prop="address" label="审核" align="center" /> -->
<el-table-column label="操作" align="center" width="180"> <el-table-column label="操作" align="center" width="180">
<template slot-scope="scope"> <template slot-scope="scope">

Loading…
Cancel
Save