<template>
|
<div class="app-container">
|
<div style="display: flex;justify-content: space-between">
|
<el-form :inline="true" style="display: flex;align-items: center;flex-wrap: wrap;" >
|
<el-form-item label="按时间查询:" >
|
<el-date-picker
|
v-model="state.tableData.listQuery.time"
|
type="datetimerange"
|
range-separator="~"
|
start-placeholder="开始时间"
|
end-placeholder="结束时间"
|
format="YYYY-MM-DD HH:mm:ss"
|
/>
|
</el-form-item>
|
<el-form-item label="企业名称:" >
|
<el-select
|
clearable
|
v-model="state.tableData.listQuery.companyId"
|
filterable
|
remote
|
reserve-keyword
|
placeholder="请输入企业名称"
|
remote-show-suffix
|
:remote-method="getCompanyList"
|
style="width: 100%"
|
>
|
<el-option
|
v-for="item in state.tableData.companyList"
|
:key="item.id"
|
:label="item.name"
|
:value="item.id"
|
/>
|
</el-select>
|
</el-form-item>
|
<el-form-item >
|
<el-button
|
type="primary"
|
@click="getList"
|
>查询</el-button>
|
<el-button
|
plain
|
type="primary"
|
@click="reset"
|
>重置</el-button>
|
<!-- <el-button type="primary" icon="Download" size="default" @click="downloadExcel">导出</el-button>-->
|
|
</el-form-item>
|
</el-form>
|
</div>
|
<el-table v-loading="loading" :data="state.tableData.data" :border="true">
|
<el-table-column label="序号" type="index" align="center" width="80" />
|
<el-table-column label="危化品品名" prop="hazmatBasic.name" align="center" />
|
<el-table-column label="CAS" prop="hazmatBasic.cas" align="center" />
|
<el-table-column label="试剂类型" prop="hazmatBasic.hazmatType" align="center" />
|
<el-table-column label="危险性质" prop="hazmatBasic.hazmatCharacter" align="center" />
|
<el-table-column label="供应商" prop="hazmatBasic.supplier" align="center" width="180" />
|
<el-table-column label="规格" prop="hazmatBasic.hazmatFormat" align="center"/>
|
<el-table-column label="最小包装类型" prop="" align="center" width="180" >
|
<template #default="scope">
|
<span> {{scope.row.hazmatBasic.minPackage == 0 ? '瓶' :scope.row.hazmatBasic.minPackage == 1?'袋':scope.row.hazmatBasic.minPackage == 2?'桶 ':scope.row.hazmatBasic.minPackage == 3?'盒':scope.row.hazmatBasic.minPackage == 4?'箱':'其他'}}</span>
|
</template>
|
</el-table-column>
|
<el-table-column label="用量" prop="count" align="center" />
|
</el-table>
|
<pagination
|
v-show="state.tableData.total > 0"
|
:total="state.tableData.total"
|
v-model:page="state.tableData.listQuery.pageNum"
|
v-model:limit="state.tableData.listQuery.pageSize"
|
@pagination="getList"
|
/>
|
</div>
|
</template>
|
|
<script setup>
|
import {onMounted, reactive, ref} from "vue";
|
import {getUseStatistic, importBaiscUse} from "@/api/hazardousChemicals/useCount";
|
import {ElMessage} from "element-plus";
|
import moment from "moment";
|
import axios from "axios";
|
import {getToken} from "@/utils/auth";
|
import {getCompany} from "@/api/hazardousChemicals/company";
|
|
const loading = ref(false)
|
const state = reactive({
|
tableData: {
|
data: [],
|
total: 0,
|
loading: false,
|
listQuery: {
|
pageNum: 1,
|
pageSize: 10,
|
startTime: null,
|
endTime: null,
|
time: [],
|
companyId: null
|
},
|
excelName: '',
|
companyList: []
|
},
|
});
|
const fields = ref({
|
'名称':'hazmatBasic.name',
|
'CAS': 'hazmatBasic.cas',
|
'试剂类型':'hazmatBasic.hazmatType',
|
'危险性质':'hazmatBasic.hazmatCharacter',
|
'供应商':'hazmatBasic.supplier',
|
'规格':'hazmatBasic.hazmatFormat',
|
'最小包装': 'minPack',
|
'用量':'count',
|
});
|
|
onMounted(
|
async () => {
|
await getNowTime();
|
await getCompanyList('')
|
await getList()
|
|
}
|
);
|
const getNowTime = () => {
|
let isDate = new Date()
|
let sTime = `${isDate.getFullYear()}-${isDate.getMonth()}-${isDate.getDate()}`
|
let eTime = `${isDate.getFullYear()}-${isDate.getMonth()+1}-${isDate.getDate()}`
|
sTime = `${sTime} 00:00:00`
|
eTime = `${eTime} ` + moment().format('HH:mm:ss')
|
state.tableData.listQuery.time = [sTime ,eTime];
|
}
|
|
const getList = async () => {
|
loading.value = true
|
state.tableData.listQuery.startTime = state.tableData.listQuery.time[0]
|
state.tableData.listQuery.endTime = state.tableData.listQuery.time[1]
|
const {time, ...data} = JSON.parse(JSON.stringify(state.tableData.listQuery))
|
const res = await getUseStatistic(data)
|
if(res.code == 200){
|
state.tableData.data = res.data.list.map(item => {
|
return {
|
...item,
|
minPack: `${item.hazmatBasic.metering}${item.hazmatBasic.unit}/${item.hazmatBasic.minPackage == 0 ? '瓶' : item.hazmatBasic.minPackage == 1?'袋':item.hazmatBasic.minPackage == 2?'桶 ':item.hazmatBasic.minPackage == 3?'盒':item.hazmatBasic.minPackage == 4?'箱':'其他'}`
|
}
|
})
|
console.log('1',state.tableData.data)
|
state.tableData.total = res.data.total
|
}else{
|
ElMessage.warning(res.message)
|
}
|
loading.value = false
|
}
|
const downloadExcel = async() => {
|
|
state.tableData.listQuery.startTime = moment(state.tableData.listQuery.time[0]).format('YYYY-MM-DD HH:mm:ss').substring(0,10)
|
state.tableData.listQuery.endTime = moment(state.tableData.listQuery.time[1]).format('YYYY-MM-DD HH:mm:ss').substring(0,10)
|
console.log('time', state.tableData.listQuery.startTime, state.tableData.listQuery.endTime)
|
state.tableData.excelName = state.tableData.listQuery.startTime + '至' +state.tableData.listQuery.endTime + '__用量统计.xls'
|
// state.tableData.listQuery.startTime = state.tableData.listQuery.time[0]
|
// state.tableData.listQuery.endTime = state.tableData.listQuery.time[1]
|
const data = {
|
startTime:state.tableData.listQuery.startTime,
|
endTime: state.tableData.listQuery.endTime
|
}
|
const url = import.meta.env.VITE_APP_BASE_API + '/statistic/importBaiscUse'
|
axios(
|
{
|
method: 'get',
|
url: url,
|
responseType: 'blob',
|
params: data,
|
headers: { 'Authorization':getToken() }
|
}
|
).then(res => {
|
if(res){
|
const link = document.createElement('a')
|
let blob = new Blob([res.data],{type: res.data.type})
|
link.style.display = "none";
|
link.href = URL.createObjectURL(blob); // 创建URL
|
link.setAttribute("download", state.tableData.excelName);
|
document.body.appendChild(link);
|
link.click();
|
document.body.removeChild(link);
|
}else {
|
ElMessage.warning('获取文件失败')
|
}
|
})
|
// const res = await importBaiscUse(data)
|
// if(res.code == 200){
|
// const link = document.createElement('a')
|
// let blob = new Blob([res.data],{type: res.data.type})
|
// link.style.display = "none";
|
// link.href = URL.createObjectURL(blob); // 创建URL
|
// link.setAttribute("download",state.tableData.excelName );
|
// document.body.appendChild(link);
|
// link.click();
|
// document.body.removeChild(link);
|
// }else{
|
// ElMessage.warning(res.message)
|
// }
|
|
}
|
const getCompanyList = async (val)=>{
|
if(val){
|
const queryParams = {
|
name: val
|
}
|
const res = await getCompany(queryParams)
|
if (res.code == 200) {
|
state.tableData.companyList = res.data.list
|
} else {
|
ElMessage.warning(res.message)
|
}
|
}else {
|
const queryParams = {
|
pageNum: 1,
|
pageSize: 10
|
}
|
const res = await getCompany(queryParams)
|
if (res.code == 200) {
|
state.tableData.companyList = res.data.list
|
if(state.tableData.listQuery.companyId == null){
|
state.tableData.listQuery.companyId = state.tableData.companyList[0].id
|
}
|
} else {
|
ElMessage.warning(res.message)
|
}
|
}
|
}
|
const reset = () => {
|
state.tableData.listQuery = {
|
pageNum: 1,
|
pageSize: 10,
|
startTime: null,
|
endTime: null,
|
time: [],
|
}
|
state.tableData.listQuery.companyId = state.tableData.companyList[0].id
|
getNowTime();
|
getList();
|
}
|
</script>
|
|
|
<style scoped lang="scss">
|
|
</style>
|