123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227 |
- <template>
- <div class="gasReport">
- <customHeader>瓦斯日报监测</customHeader>
- <div class="report-container">
- <div class="search-area">
- <a-row>
- <a-col :span="4">
- <div class="area-item">
- <div class="item-text">填报日期:</div>
- <a-date-picker style="width: 220px" :showTime="false" valueFormat="YYYY-MM-DD"
- v-model:value="searchData.reportTime" placeholder="请选择填报日期" @change="onChange" />
- </div>
- </a-col>
- <a-col :span="4">
- <div class="area-item">
- <div class="item-text">区队:</div>
- <a-select v-model:value="searchData.districtTeam" style="width: 220px" placeholder="请选择区队">
- <a-select-option v-for="item in qdList" :key="item" :value="item.value">{{ item.label
- }}</a-select-option>
- </a-select>
- </div>
- </a-col>
- <a-col :span="4">
- <div class="area-item">
- <div class="item-text">上报人:</div>
- <a-input style="width: 220px" v-model:value="searchData.sbr" placeholder="请输入上报人" />
- </div>
- </a-col>
- <a-col :span="4">
- <div class="area-item">
- <div class="item-text">上报地点:</div>
- <a-select v-model:value="searchData.strInstallPos" style="width: 220px" placeholder="请选择上报地点">
- <a-select-option v-for="item in addressList" :key="item" :value="item.value">{{ item.label
- }}</a-select-option>
- </a-select>
- </div>
- </a-col>
- <a-button type="primary" preIcon="ant-design:search-outlined" @click="getSearch">查询</a-button>
- <a-button preIcon="ant-design:sync-outlined" style="margin: 0px 15px" @click="onReset">重置</a-button>
- <a-button type="primary" preIcon="ant-design:download-outlined" @click="getExport">导出报表</a-button>
- <a-button type="primary" preIcon="ant-design:download-outlined" @click="getExport1" style="margin: 0px 15px">导出瓦斯三对照报表</a-button>
- </a-row>
- </div>
- <a-table :columns="columns" :data-source="tableData" :scroll="{ y: 500 }" class="tableW" :pagination="pagination"
- @change="pageChange">
- <template #bodyCell="{ column, text }"></template>
- </a-table>
- </div>
- </div>
- </template>
- <script setup lang="ts">
- import { ref, onMounted, computed, reactive } from 'vue';
- import { columns } from './gas-report.data';
- import { getGasAddressList, getList, expComReportByParam } from './gas-report.api';
- import customHeader from '/@/components/vent/customHeader.vue';
- import { message } from 'ant-design-vue';
- import dayjs from 'dayjs';
- let searchData = reactive({
- reportTime: dayjs().format('YYYY-MM-DD'),
- districtTeam: '',
- sbr: '',
- strInstallPos: '',
- });
- let qdList = reactive<any[]>([]); //区队下拉列表
- let addressList = reactive<any[]>([]); //上报地点下拉列表
- let pagination = reactive({
- current: 1, // 当前页码
- pageSize: 10, // 每页显示条数
- total: 0, // 总条目数,后端返回
- // showTotal: (total, range) => `${range[0]}-${range[1]} 条,总共 ${total} 条`, // 分页右下角显示信息
- showSizeChanger: true, // 是否可改变每页显示条数
- pageSizeOptions: ['10', '20', '50'], // 可选的每页显示条数
- });
- let tableData = ref<any[]>([]);
- function onChange(val, time) {
- searchData.reportTime = time;
- }
- //获取日报列表数据
- async function getTableList() {
- let res = await getList({ pageNo: pagination.current, pageSize: pagination.pageSize, ...searchData });
- console.log(res, '瓦斯日报列表数据-----------');
- tableData.value = res.records;
- pagination.total = res.total;
- }
- //查询
- function getSearch() {
- pagination.current = 1;
- getTableList();
- }
- //重置
- function onReset() {
- pagination.current = 1;
- searchData.districtTeam = '';
- searchData.reportTime = '';
- searchData.strInstallPos = '';
- searchData.sbr = '';
- getTableList();
- }
- //分页切换
- function pageChange(val) {
- pagination.current = val.current;
- pagination.pageSize = val.pageSize;
- getTableList();
- }
- function uniqueObjectsArray(arr) {
- const map = new Map();
- return arr.filter((item) => {
- const key = JSON.stringify(item);
- const isNew = !map.has(key);
- map.set(key, item);
- return isNew;
- });
- }
- //获取安装位置下拉选项
- async function getSelectList() {
- let res = await getGasAddressList({ devicekind: 'gasDayReport' });
- console.log(res, '区队下拉选项--------');
- qdList.length = 0;
- addressList.length = 0;
- if (res.length != 0) {
- res.forEach((el) => {
- qdList.push({ label: el.devgroup_dictText, value: el.devgroup_dictText });
- addressList.push({ label: el.strinstallpos, value: el.strinstallpos });
- });
- qdList = uniqueObjectsArray(qdList);
- }
- }
- //导出报表
- async function getExport() {
- if (searchData.reportTime) {
- let res = await expComReportByParam({ tempName: 'wsrb', reportTime: searchData.reportTime });
- console.log(res, '导出------------');
- let filename = searchData.reportTime + '.xlsx';
- downFilePublic(res, filename);
- } else {
- message.warning('请选择需要导出数据的填报日期!');
- }
- }
- //导出三对照报表
- async function getExport1() {
- if (searchData.reportTime) {
- let res = await expComReportByParam({ tempName: 'wssdz', reportTime: searchData.reportTime });
- console.log(res, '导出------------');
- let filename = searchData.reportTime + '.xlsx';
- downFilePublic(res, filename);
- } else {
- message.warning('请选择需要导出数据的填报日期!');
- }
- }
- // 下载公用方法
- function downFilePublic(content, fileName) {
- const blob = new Blob([content], { type: 'application/xlsx;charset=UTF-8' }); // 构造一个blob对象来处理数据
- // 对于<a>标签,只有 Firefox 和 Chrome(内核) 支持 download 属性
- // IE10以上支持blob但是依然不支持download
- if ('download' in document.createElement('a')) {
- // 支持a标签download的浏览器
- const link = document.createElement('a'); // 创建a标签
- link.download = fileName; // a标签添加属性
- link.style.display = 'none';
- link.href = URL.createObjectURL(blob);
- document.body.appendChild(link);
- link.click(); // 执行下载
- URL.revokeObjectURL(link.href); // 释放url
- document.body.removeChild(link); // 释放标签
- } else {
- // 其他浏览器
- navigator.msSaveBlob(blob, fileName);
- }
- }
- onMounted(() => {
- getSelectList();
- getTableList();
- });
- </script>
- <style lang="less" scoped>
- .gasReport {
- width: 100%;
- height: 100%;
- padding: 80px 10px 15px 10px;
- box-sizing: border-box;
- position: relative;
- .search-area {
- margin: 20px 0px;
- .area-item {
- display: flex;
- align-items: center;
- .item-text {
- color: #fff;
- }
- }
- }
- .zxm-picker,
- .zxm-input {
- border: 1px solid #3ad8ff77 !important;
- background-color: #ffffff00 !important;
- color: #fff !important;
- }
- }
- :deep(.zxm-table-thead > tr > th:last-child) {
- border-right: 1px solid #91e9fe !important;
- }
- :deep(.zxm-picker-input > input) {
- color: #fff;
- }
- :deep(.zxm-select:not(.zxm-select-customize-input) .zxm-select-selector) {
- border: 1px solid #3ad8ff77 !important;
- background-color: #ffffff00 !important;
- }
- :deep(.zxm-select-selection-item) {
- color: #fff !important;
- }
- </style>
|