<template>
|
<div class="app-container">
|
<div class="filter-container">
|
<el-row style="padding-top: 10px">
|
<div style="display: block;">
|
<div class="basic_search">
|
<span>地域:  </span>
|
<el-select
|
v-model="listQuery.filter.province"
|
placeholder="请选择省份"
|
clearable
|
filterable
|
@change="changeArea('province')">
|
<el-option
|
v-for="item in provinceList"
|
:key="item.id"
|
:label="item.name"
|
:value="item.name"
|
>
|
</el-option>
|
</el-select>
|
</div>
|
<div class="basic_search">
|
<el-select v-model="listQuery.filter.city" prop="city" clearable filterable @change="changeArea('city')">
|
<el-option
|
v-for="item in cityList"
|
:key="item.id"
|
:label="item.name"
|
:value="item.name"
|
>
|
</el-option>
|
</el-select>
|
</div>
|
<div class="basic_search">
|
<el-select v-model="listQuery.filter.district" clearable filterable @change="changeArea('district')">
|
<el-option
|
v-for="item in districtList"
|
:key="item.id"
|
:label="item.name"
|
:value="item.name"
|
>
|
</el-option>
|
</el-select>
|
</div>
|
<div class="basic_search">
|
<span>企业类型:</span>
|
<el-select
|
v-model.trim="listQuery.filter.safetysupervision"
|
placeholder="请选择企业类型" clearable filterable>
|
<el-option value="" label="全部">
|
</el-option>
|
<el-option
|
v-for="(item,index) in checkTypeList"
|
:label="item.text"
|
:value="item.text"
|
:key="index"/>
|
</el-select>
|
</div>
|
</div>
|
</el-row>
|
<el-row style="padding-top: 10px">
|
企业名称:
|
<el-input v-model="listQuery.filter.enterprisename" class="filter-item" placeholder="企业名称" style="width: 20%;padding-right: 15px"
|
@keyup.enter.native="search"/>
|
|
查询时间:
|
<el-date-picker
|
value-format="yyyy-MM-dd"
|
v-model="listQuery.filter.specificDate"
|
type="date"
|
>
|
</el-date-picker>
|
<el-button style="margin-left: 10px;" type="primary" icon="el-icon-search" @click="search()">查询</el-button>
|
<el-button style="margin-left: 10px;" type="primary" icon="el-icon-download" @click="exportToExcel">导出</el-button>
|
</el-row>
|
</div>
|
<div class="table_content">
|
<el-table
|
v-loading="listLoading"
|
:data="tableData"
|
border
|
fit
|
highlight-current-row
|
style="width: 100%;"
|
>
|
<el-table-column label="序号" type="index" align="center" width="60"/>
|
<el-table-column label="企业名称" prop="enterprisename" align="center" width="300">
|
</el-table-column>
|
<el-table-column label="库存总数(箱)" prop="stocknum" align="center">
|
</el-table-column>
|
<el-table-column label="爆竹类(箱)" prop="firecracker" align="center">
|
</el-table-column>
|
<el-table-column label="喷花类(箱)" prop="spray" align="center">
|
</el-table-column>
|
<el-table-column label="旋转类(箱)" prop="rotation" align="center">
|
</el-table-column>
|
<el-table-column label="吐珠类(箱)" prop="bead" align="center">
|
</el-table-column>
|
<el-table-column label="玩具类(箱)" prop="toy" align="center">
|
</el-table-column>
|
<el-table-column label="组合烟花类(箱)" prop="combined" align="center">
|
</el-table-column>
|
</el-table>
|
<br>
|
<el-pagination
|
v-show="recordTotal>0"
|
:current-page="listQuery.pageIndex"
|
:page-sizes="[30, 50, 100, 200, 500]"
|
:page-size="listQuery.pageSize"
|
:total="recordTotal"
|
layout="total, sizes, prev, pager, next, jumper"
|
background
|
style="float:right;"
|
@size-change="handleSizeChange"
|
@current-change="handleCurrentChange"
|
/>
|
<br>
|
</div>
|
</div>
|
</template>
|
|
|
<script>
|
import {getHistoryStock,getExportHistoryStock} from "@/api/stock";
|
import { computePageCount } from "@/utils";
|
import {getCityListData, getProvinceListData} from "../../api/area";
|
import {dictionaryAllItems} from "../../api/dictionary";
|
import Cookies from 'js-cookie'
|
export default {
|
name: 'cityStock',
|
data(){
|
return{
|
pageSize: 30,
|
recordTotal: 0,
|
pageTotal: 0,
|
currentDate:"",
|
listLoading:false,
|
tableData:[],
|
checkTypeList:[],
|
provinceList:[],
|
cityList:[],
|
districtList:[],
|
isSupervision : Cookies.get('isSupervision'),
|
listQuery: {
|
pageSize:30,
|
pageIndex:1,
|
filter: {
|
specificDate:"",
|
province: '',
|
city:"",
|
district:"",
|
enterprisename: '',
|
safetysupervision:'',
|
},
|
},
|
}
|
},
|
created(){
|
this.initCurrentDate()
|
this.getHistoryStock()
|
this.getDictionaryCheckType();
|
if (this.isSupervision === 'null'){
|
this.listQuery.filter.safetysupervision = "烟花爆竹批发经营"
|
}
|
this.getProvince();
|
},
|
methods:{
|
handleSizeChange(val) {
|
this.listQuery.pageSize = val
|
this.getHistoryStock()
|
},
|
handleCurrentChange(val) {
|
this.listQuery.pageIndex = val
|
this.getHistoryStock()
|
},
|
search(){
|
this.getHistoryStock()
|
},
|
getHistoryStock(){
|
if (this.listQuery.filter.specificDate == null)
|
this.initCurrentDate()
|
this.listLoading = true
|
getHistoryStock(this.listQuery).then(res=>{
|
if (res.data.code === '200') {
|
this.tableData = res.data.result.records
|
this.recordTotal = res.data.result.total
|
this.pageTotal = computePageCount(res.data.result.total, res.data.result.size)
|
}else{
|
this.$message({
|
type:'warning',
|
message:res.data.message
|
})
|
}
|
})
|
|
.finally(res=>{
|
this.listLoading = false
|
})
|
|
},
|
initCurrentDate(){
|
let now = new Date();
|
let year = now.getFullYear(); //得到年份
|
let month = now.getMonth(); //得到月份
|
let date = now.getDate(); //得到日期
|
month = month + 1;
|
month = month.toString().padStart(2, "0");
|
date = date.toString().padStart(2, "0");
|
let defaultDate = `${year}-${month}-${date}`;
|
this.$set(this.listQuery.filter, "specificDate", defaultDate);
|
},
|
formatJson(filterVal, jsonData) {
|
return jsonData.map(v => filterVal.map(j => v[j]))
|
},
|
async exportToExcel(){
|
if (this.listQuery.filter.specificDate == null)
|
this.initCurrentDate()
|
|
let res = await getExportHistoryStock(this.listQuery)
|
if(res.data.code === '200'){
|
if(res.data.result === null ||res.data.result === [] || res.data.result.length === 0){
|
this.$message({
|
type:'warning',
|
message:'无数据可导出'
|
})
|
}else{
|
let allData = res.data.result
|
import('@/vendor/Export2Excel').then((excel) => {
|
const tHeader = [
|
'企业名称',
|
'库存总数(箱)',
|
'爆竹类(箱)',
|
'喷花类(箱)',
|
'旋转类(箱)',
|
'吐珠类(箱)',
|
'玩具类(箱)',
|
'组合烟花类(箱)',
|
|
]
|
const filterVal = [
|
'enterprisename',
|
'stocknum',
|
"firecracker",
|
'spray',
|
'rotation',
|
'bead',
|
'toy',
|
'combined'
|
]
|
const data = this.formatJson(filterVal, allData)
|
excel.export_json_to_excel({
|
header: tHeader,
|
data,
|
filename: '企业历史库存统计'
|
})
|
})
|
}
|
|
}else{
|
this.$message({
|
message:res.data.message,
|
type:'warning'
|
})
|
}
|
},
|
//获取省
|
async getProvince() {
|
let res = await getProvinceListData()
|
if (res.data.code === "200") {
|
this.provinceList = res.data.result.provinceList
|
}
|
},
|
async changeArea(value) {
|
if (value === 'province') {
|
this.listQuery.filter.city = ''
|
this.listQuery.filter.district = ''
|
this.areaListQuery = {
|
type: 2,
|
parenttype: 1,
|
parentname: this.listQuery.filter.province,
|
}
|
let res = await getCityListData(this.areaListQuery)
|
if (res.data.code === "200") {
|
this.cityList = res.data.result
|
}
|
} else if (value === 'city') {
|
this.listQuery.filter.district = ''
|
this.areaListQuery = {
|
type: 3,
|
parenttype: 2,
|
parentname: this.listQuery.filter.city,
|
}
|
let res = await getCityListData(this.areaListQuery)
|
if (res.data.code === "200") {
|
this.districtList = res.data.result
|
}
|
}
|
},//市、镇、街道、委员会
|
getDictionaryCheckType() {
|
const _this = this;
|
if (_this.checkTypeList && _this.checkTypeList.length > 0) {
|
return
|
}
|
const params = {};
|
params['dictionaryType'] = '安全监管分类';
|
dictionaryAllItems(params).then(response => {
|
const res = response.data;
|
if (res.code === "200") {
|
_this.checkTypeList = res.result
|
} else {
|
parseError({ error: res.message, vm: _this })
|
}
|
}).catch(error => {
|
parseError({ error: error, vm: _this })
|
})
|
},
|
}
|
}
|
</script>
|
|
<style scoped>
|
.basic_search{
|
display:inline-block;
|
}
|
</style>
|