<script src="../../../.postcssrc.js"></script>
|
<template>
|
<div class="app-container">
|
<div class="filter-container">
|
<div style="display: block">
|
<div class="basic_search">
|
<span>区域:</span>
|
<el-select v-model="listQuery.filter.province" 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">
|
<el-select v-model="listQuery.filter.street"clearable filterable @change="changeArea('street')" >
|
<el-option
|
v-for="item in streetList"
|
:key="item.id"
|
:label="item.name"
|
:value="item.name"
|
>
|
</el-option>
|
</el-select>
|
</div>
|
<div class="basic_search">
|
<el-select v-model="listQuery.filter.committee" clearable filterable>
|
<el-option
|
v-for="item in committeeList"
|
:key="item.id"
|
:label="item.name"
|
:value="item.name"
|
>
|
</el-option>
|
</el-select>
|
</div>
|
</div>
|
|
<div style="display: block">
|
<div class="basic_search" style="padding-top: 10px;">
|
<span>按时间查询:</span>
|
<el-date-picker
|
value-format="yyyy-MM-dd HH:mm:ss"
|
v-model="validTime"
|
type="datetimerange"
|
:default-time="['00:00:00','23:59:59']"
|
:picker-options="pickerOptions"
|
range-separator="-"
|
start-placeholder="开始日期"
|
end-placeholder="结束日期"
|
>
|
</el-date-picker>
|
</div>
|
|
<div class="basic_search" style="padding-top: 10px;margin-left: 15px">
|
<span>安全监管分类:</span>
|
<el-select v-model="listQuery.filter.safetysupervision" clearable filterable>
|
<el-option value="" label="全部">
|
</el-option>
|
<el-option
|
v-for="item in safetysupervision"
|
:key="item"
|
:label="item"
|
:value="item"
|
>
|
</el-option>
|
</el-select>
|
</div>
|
</div>
|
|
<div style="display: block;">
|
<div class="basic_search" style="padding-top: 10px">
|
<span>按运输证号码查:</span>
|
<el-input filterable clearable v-model="listQuery.filter.transportcert" style="width:200px">
|
</el-input>
|
</div>
|
<div class="basic_search" style="padding-top: 10px">
|
<span>按出库企业名称查:</span>
|
<el-input filterable clearable v-model="listQuery.filter.enterprisename" style="width:200px">
|
</el-input>
|
</div>
|
<div class="basic_search" style="padding-top: 10px">
|
<span>按出库类型查:</span>
|
<el-select v-model="listQuery.filter.type" clearable filterable>
|
<el-option
|
v-for="item in typeList"
|
:key="item.id"
|
:label="item.name"
|
:value="item.id"
|
>
|
</el-option>
|
</el-select>
|
</div>
|
<div class="basic_search" style="margin-right: 10px">
|
<el-button style="margin-left: 10px;" type="primary" @click="reset()">重置</el-button>
|
<el-button style="margin-left: 10px;" type="primary" icon="el-icon-search" @click="searchProductSearch('查询','')">查询</el-button>
|
<el-button style="margin-left: 10px;" type="primary" icon="el-icon-download" @click="exportToExcel">导出</el-button>
|
<el-button style="margin-left: 10px;" type="primary" icon="el-icon-download" @click="exportDetailToExcel">导出明细</el-button>
|
</div>
|
</div>
|
|
</div>
|
<div class="table_content">
|
<el-table
|
v-loading="listLoading"
|
:key="tableKey"
|
:data="outStorageData"
|
border
|
fit
|
@selection-change="handleSelectionChange"
|
highlight-current-row
|
style="width: 100%;"
|
>
|
<el-table-column
|
type="selection"
|
width="55">
|
</el-table-column>
|
<el-table-column label="序号" type="index" align="center" width="60"/>
|
<el-table-column label="出库单号" prop="ordercode" align="center">
|
</el-table-column>
|
<el-table-column label="出库企业" prop="shop" align="center">
|
</el-table-column>
|
<el-table-column label="创建时间" prop="createat" align="center">
|
</el-table-column>
|
<el-table-column label="运输证号" prop="transportcert" align="center">
|
</el-table-column>
|
<el-table-column label="数量(箱)" prop="realboxnum" align="center">
|
</el-table-column>
|
<el-table-column label="类型" prop="type" align="center">
|
<template slot-scope="scope">
|
<div v-for="item in typeList">
|
<div v-if="item.id === scope.row.type">
|
{{item.name}}
|
</div>
|
</div>
|
</template>
|
</el-table-column>
|
<el-table-column label="操作" align="center" width="180" class-name="small-padding fixed-width">
|
<template slot-scope="scope">
|
<el-button type="text" @click="showOutStorageDetail(scope.row)" >查看</el-button>
|
</template>
|
</el-table-column>
|
</el-table>
|
<br>
|
<el-pagination
|
v-show="recordTotal>0"
|
:current-page="currentPage"
|
:page-sizes="[20, 50, 100, 200]"
|
:page-size="pageSize"
|
:total="recordTotal"
|
layout="total, sizes, prev, pager, next, jumper"
|
background
|
style="float:right;"
|
@size-change="handleSizeChange"
|
@current-change="handleCurrentChange"
|
/>
|
<br>
|
</div>
|
<out-storage-detail ref="storage"></out-storage-detail>
|
</div>
|
</template>
|
|
<script>
|
import outStorageDetail from './outStorageDetail/index'
|
import { computePageCount } from "../../utils";
|
import {exportOutStorage, getOutStorageListData, exportOutStorageDetail} from "../../api/flow";
|
import {getCityListData, getProvinceListData} from "../../api/area";
|
|
|
export default {
|
name: "addSelfExam",
|
data(){
|
return{
|
tableKey:'',
|
selectId:'',
|
validTime:['',''],
|
cityList:[],
|
provinceList:[],
|
districtList:[],
|
streetList:[],
|
committeeList:[],
|
typeList:[{id:1,name:'常规出库'},{id:2,name:'退货出库'},{id:3,name:'销毁出库'}],
|
safetysupervision:[
|
"烟花爆竹生产",
|
"烟花爆竹批发经营",
|
"烟花爆竹零售经营(短期)",
|
"烟花爆竹零售经营(长期)",
|
],
|
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]);
|
}
|
}]
|
},
|
listQuery: {
|
pageSize:20,
|
pageIndex:1,
|
filter: {
|
safetysupervision:"",
|
province: '',
|
city: '',
|
district: '',
|
street: '',
|
committee: '',
|
starttime: '',
|
endtime: '',
|
enterprisename: '',
|
transportcert:'',
|
type:'',
|
},
|
},
|
pageSize: 10,
|
recordTotal: 0,
|
currentPage: 1,
|
pageTotal: 0,
|
listLoading:false,
|
outStorageData:[],
|
}
|
},
|
created() {
|
this.initValidTime()
|
this.getOutStorageData()
|
this.getProvince()
|
|
},
|
components: {
|
outStorageDetail
|
},
|
methods:{
|
async getOutStorageData(){
|
this.listLoading = true
|
if( this.validTime !== null ){
|
this.listQuery.filter.starttime = this.validTime[0]
|
this.listQuery.filter.endtime = this.validTime[1]
|
}else{
|
this.listQuery.filter.starttime = ''
|
this.listQuery.filter.endtime = ''
|
}
|
let res = await getOutStorageListData(this.listQuery)
|
if(res.data.code === "200"){
|
this.recordTotal = res.data.result.total
|
this.pageSize = res.data.result.size
|
this.pageTotal = computePageCount(res.data.result.total, res.data.result.size)
|
this.currentPage = res.data.result.current
|
this.outStorageData = res.data.result.records
|
}else{
|
this.$message({
|
type:'warning',
|
message:res.data.message
|
})
|
}
|
this.listLoading = false
|
},
|
|
showOutStorageDetail(val){
|
this.$refs.storage.openOutStorageDetail(val)
|
|
},
|
|
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.listQuery.filter.street = ''
|
this.listQuery.filter.committee = ''
|
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.listQuery.filter.street = ''
|
this.listQuery.filter.committee = ''
|
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
|
}
|
}else if(value === 'district'){
|
this.listQuery.filter.street = ''
|
this.listQuery.filter.committee = ''
|
this.areaListQuery = {
|
type: 4,
|
parenttype: 3,
|
parentname: this.listQuery.filter.district,
|
}
|
let res = await getCityListData(this.areaListQuery)
|
if(res.data.code === "200"){
|
this.streetList = res.data.result
|
}
|
}else if(value === 'street'){
|
this.listQuery.filter.committee = ''
|
this.areaListQuery = {
|
type: 5,
|
parenttype: 4,
|
parentname: this.listQuery.filter.street,
|
}
|
let res = await getCityListData(this.areaListQuery)
|
if(res.data.code === "200"){
|
this.committeeList = res.data.result
|
}
|
}
|
},//市、镇、街道、委员会
|
|
reset(){
|
this.listQuery= {
|
pageSize: 10,
|
pageIndex: 1,
|
filter: {
|
province: '',
|
city: '',
|
district: '',
|
street: '',
|
committee: '',
|
starttime: '',
|
endtime: '',
|
enterprisename: '',
|
transportcert: '',
|
},
|
}
|
},
|
|
searchProductSearch(){
|
this.getOutStorageData()
|
},
|
|
handleSizeChange(val) {
|
this.listQuery.pageSize = val
|
this.getOutStorageData()
|
},
|
handleCurrentChange(val) {
|
this.listQuery.pageIndex = val
|
this.getOutStorageData()
|
},
|
|
async exportToExcel(){
|
let res = await exportOutStorage(this.listQuery)
|
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 = [
|
'ordercode',
|
'operator',
|
'createat',
|
'transportcert',
|
'realboxnum',
|
'type',
|
]
|
const data = allData.map(item =>{
|
return [
|
item.ordercode,
|
item.operator,
|
item.createat,
|
item.transportcert,
|
item.realboxnum,
|
this.typeList.filter(t=>t.id === item.type)[0].name,
|
]
|
}
|
);
|
excel.export_json_to_excel({
|
header: tHeader,
|
data,
|
filename: '出库查询'
|
})
|
})
|
}
|
},
|
|
async exportDetailToExcel(){
|
if(this.selectId == ""){
|
this.$message({
|
type:'warning',
|
message:'请选择导出明细的行数'
|
})
|
}else{
|
let res = await exportOutStorageDetail(this.selectId)
|
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 = [
|
'itemname',
|
'itemcode',
|
'type',
|
'level',
|
'specification',
|
'explosivecontent',
|
'num',
|
'transportcert',
|
'ordercode',
|
'directioncode',
|
'shop'
|
]
|
const data = this.formatJson(filterVal, allData)
|
excel.export_json_to_excel({
|
header: tHeader,
|
data,
|
filename: '出库明细清单'
|
})
|
})
|
}
|
|
}else{
|
this.$message({
|
message:res.data.message,
|
type:'warning'
|
})
|
}
|
}
|
|
},
|
|
formatJson(filterVal, jsonData) {
|
return jsonData.map(v =>
|
filterVal.map(j => {
|
|
return v[j];
|
})
|
);
|
},
|
|
handleSelectionChange (val) {
|
if(val.length > 1) {
|
this.$refs.table.clearSelection(); //清除
|
this.$refs.table.toggleRowSelection(val.pop()); //pop:最后一个
|
} else {
|
if(val.length === 0){
|
this.selectId = ''
|
}else{
|
this.selectId = val[0].ordercode;
|
}
|
|
}
|
},
|
initValidTime(){
|
const start = new Date();
|
const end = new Date();
|
start.setTime(end.getTime() - 3600 * 1000 * 24 * 6);
|
this.validTime[0] = [start.getFullYear(), start.getMonth() + 1, start.getDate()].join("-") + " 00:00:00" ;
|
this.validTime[1] = [end.getFullYear(), end.getMonth() + 1, end.getDate()].join("-") +" 23:59:59";
|
}
|
|
},
|
}
|
</script>
|
|
<style scoped>
|
.basic_search{
|
display:inline-block;
|
}
|
|
</style>
|