<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="所属部门:" prop="departId" >
|
<el-cascader
|
style="width: 100%"
|
ref="classifyRef"
|
v-model="state.tableData.listQuery.departId"
|
:options="state.deptList"
|
:props="state.props"
|
clearable
|
:show-all-levels="false"
|
@change="handleChange"
|
/>
|
</el-form-item>
|
<el-form-item label="人员:" prop="userId" >
|
<el-select
|
clearable
|
v-model="state.tableData.userName"
|
filterable
|
remote
|
@change="selectValue"
|
reserve-keyword
|
placeholder="请输入人员名称"
|
remote-show-suffix
|
:remote-method="getPeopleList"
|
style="width: 100%"
|
>
|
<el-option
|
v-for="item in state.peopleList"
|
:key="item.id"
|
:label="item.name"
|
:value="item.name"
|
/>
|
</el-select>
|
</el-form-item>
|
<el-form-item >
|
<el-button
|
plain
|
type="primary"
|
@click="reset"
|
>重置</el-button>
|
<el-button
|
icon="Search"
|
type="primary"
|
@click="getList"
|
>查询</el-button>
|
|
<!-- <vue3-json-excel-->
|
<!-- class="ml10"-->
|
<!-- :json-data="state.tableData.data"-->
|
<!-- :fields="fields"-->
|
<!-- :name="state.tableData.excelName"-->
|
<!-- >-->
|
<el-button type="primary" icon="Download" size="default" @click="downloadExcel">导出</el-button>
|
<!-- </vue3-json-excel>-->
|
</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 {getDept} from "@/api/hazardousChemicals/deptment";
|
import Cookies from "js-cookie";
|
import {getUser} from "@/api/hazardousChemicals/user";
|
const classifyRef = ref(null)
|
const loading = ref(false)
|
const state = reactive({
|
tableData: {
|
data: [],
|
total: 0,
|
loading: false,
|
listQuery: {
|
pageNum: 1,
|
pageSize: 10,
|
startTime: null,
|
endTime: null,
|
time: [],
|
userId: null,
|
departId: null,
|
},
|
excelName: ''
|
},
|
deptList: [],
|
peopleList: [],
|
props: {
|
checkStrictly: true,
|
},
|
userType: null,
|
companyId: null,
|
isAdmin: false
|
});
|
const fields = ref({
|
'名称':'hazmatBasic.name',
|
'CAS': 'hazmatBasic.cas',
|
'试剂类型':'hazmatBasic.hazmatType',
|
'危险性质':'hazmatBasic.hazmatCharacter',
|
'供应商':'hazmatBasic.supplier',
|
'规格':'hazmatBasic.hazmatFormat',
|
'最小包装': 'minPack',
|
'用量':'count',
|
});
|
const userInfo = ref()
|
onMounted(
|
() => {
|
userInfo.value = JSON.parse(Cookies.get('userInfo'))
|
console.log("userInfo",userInfo.value)
|
state.userType = userInfo.value.userType
|
if(userInfo.value.userType === 0){
|
state.isAdmin = true;
|
}else {
|
state.isAdmin = false;
|
state.companyId = userInfo.value.companyId;
|
state.userType = 2
|
}
|
getNowTime();
|
getList()
|
getDeptList()
|
getPeopleList("")
|
}
|
);
|
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 handleChange = ()=> {
|
if(classifyRef.value.getCheckedNodes().length>0){
|
state.tableData.listQuery.departId = classifyRef.value.getCheckedNodes()[0].value
|
if (classifyRef.value.popperVisible) {
|
classifyRef.value.togglePopperVisible()
|
}
|
}else{
|
state.tableData.listQuery.departId = null
|
}
|
|
}
|
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 getDeptList = async ()=>{
|
const param = {
|
companyId: state.companyId
|
}
|
const res = await getDept(param)
|
if (res.code == 200) {
|
state.deptList = recursion(res.data)
|
} else {
|
ElMessage.warning(res.message)
|
}
|
}
|
const recursion = (data) => {
|
let tmp = []
|
for (let i = 0; i < data.length; i++) {
|
let item = data[i]
|
// children为空
|
if (item.children&& item.children.length==0) {
|
tmp.push({
|
value: item.id,
|
label: item.name
|
})
|
// 有children
|
} else {
|
tmp.push({
|
value: item.id,
|
label: item.name,
|
children:recursion(item.children)
|
})
|
}
|
}
|
return tmp;
|
}
|
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 getPeopleList = async (val)=>{
|
if(val != ""){
|
const queryParams = {
|
name: val
|
}
|
const res = await getUser(queryParams)
|
if (res.code == 200) {
|
state.peopleList = res.data.list
|
} else {
|
ElMessage.warning(res.message)
|
}
|
}else {
|
const queryParams = {
|
pageNum: 1,
|
pageSize: 10
|
}
|
const res = await getUser(queryParams)
|
if (res.code == 200) {
|
state.peopleList = res.data.list
|
} else {
|
ElMessage.warning(res.message)
|
}
|
}
|
}
|
const selectValue = (val) => {
|
if(!val){
|
state.tableData.listQuery.userId = null
|
}
|
state.peopleList.forEach(item => {
|
if(item.name === val){
|
state.tableData.listQuery.userId = item.id
|
}
|
})
|
}
|
const reset = () => {
|
state.tableData.listQuery= {
|
pageNum: 1,
|
pageSize: 10,
|
startTime: null,
|
endTime: null,
|
time: [],
|
userId: null,
|
departId: null,
|
}
|
state.tableData.userName = ''
|
getNowTime();
|
getList();
|
}
|
</script>
|
|
|
<style scoped lang="scss">
|
|
</style>
|