123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347 |
- <template>
- <div class="airportInfo">
- <div class="variable">
- <StatisticsHeader
- :title="titleTop"
- :items="formItems"
- :data="formData"
- :eledata="eledata"
- with-setting
- :withSetting="false"
- :withExport="true"
- :set="set"
- :action="action"
- :asShow="asShow"
- @getFormData="getFormData"
- @export="tableToExcel"
- @upset="upset"
- />
- </div>
- <div
- class="echart"
- :style="
- tableList.length > 0 ? 'background:rgba(0,0,0,0)' : 'background:#ffffff'
- "
- >
- <Tableformbrs
- :tableList="
- tableList.slice((currentPage - 1) * pagesize, currentPage * pagesize)
- "
- :action="action"
- :set="set"
- />
- </div>
- <el-pagination
- background
- v-if="tableList.length > 0"
- @size-change="handleSizeChange"
- @current-change="handleCurrentChange"
- layout="total, prev, pager, next, jumper"
- :total="total"
- :page-size="pagesize"
- style="position: absolute; right: 0; bottom: 0"
- >
- </el-pagination>
- </div>
- </template>
- <script>
- import Echarts from "../components/echart/index.vue";
- import Tableformbrs from "../components/echart/tableforms.vue";
- import StatisticsHeader from "../components/echart/statisticsHeader.vue";
- import { export_json_to_excel } from "@/utils/Export2Excel";
- import { Query } from "@/api/webApi";
- export default {
- name: "ChartsBar",
- data() {
- return {
- currentPage: 1,
- pagesize: 10,
- total: 0,
- asShow: false,
- optiondata: [],
- picShow: true, //图片表格切换
- action: null,
- dataid: "collection_ecahrt0",
- listqueryTemplateID: [
- DATACONTENT_ID.modeDomesticexportTable,
- DATACONTENT_ID.modeDomesticentryTable,
- DATACONTENT_ID.modeInternationalexportTable,
- DATACONTENT_ID.modeInternationaladvanceTable,
- ],
- eledata: null,
- set: "",
- isShow: Echarts,
- tableList: [],
- tableListcop: [],
- listname: "",
- listHeader: [],
- tableData: {
- time: [],
- data1: [],
- data2: [],
- kg: "",
- tyol: "",
- },
- formData: {
- airport: "",
- dateTime: "",
- },
- titleTop: "航班统计",
- formItems: [
- {
- prop: "fttp",
- inputType: "select",
- placeholder: "国内国际",
- requiredWarning: "",
- clearable: true,
- options: [
- {
- value: 0,
- label: "国内出港",
- },
- {
- value: 1,
- label: "国内进港",
- },
- {
- value: 2,
- label: "国际出港",
- },
- {
- value: 3,
- label: "国际进港",
- },
- ],
- },
- {
- prop: "dateTime",
- inputType: "datePicker",
- clearable: true,
- width: "240px",
- options: [],
- },
- ],
- };
- },
- mounted() {
- this.pagesize = window.screen.height > 1080 ? 20 : 10;
- // this.getQuery([]);
- },
- watch: {
- // 监听数据变化,重绘折线图
- option: {
- deep: true,
- handler(newVal) {},
- },
- },
- destroyed() {},
- methods: {
- handleSizeChange(val) {
- this.pagesize = val;
- },
- handleCurrentChange(val) {
- this.currentPage = val;
- },
- getFormData(data) {
- this.tableData.time = [];
- this.tableData.data1 = [];
- this.tableData.data2 = [];
- this.tableList = [];
- if (data.fttp === 0) {
- this.action = 6;
- } else if (data.fttp === 1) {
- this.action = 7;
- } else if (data.fttp === 2) {
- this.action = 8;
- } else if (data.fttp === 3) {
- this.action = 9;
- }
- let option = [
- {
- fd1: data.dateTime[0] + " 00:00:00",
- fd2: data.dateTime[1] + " 23:59:59",
- },
- ];
- this.getQuery(option, data.fttp);
- this.listname =
- "航班统计国内出港" + data.dateTime[0] + "--" + data.dateTime[1];
- this.listHeader = [
- "序号",
- "执飞日期",
- "计划航班数",
- "已完成航班数",
- "一个码航班数",
- "特货航班数",
- "收运核单航班数",
- "安检放行航班数",
- "加货航班数",
- "预配载航班数",
- "交接复核航班数",
- "机下交接航班数",
- "拉下航班数",
- "拉回确认航班数",
- ];
- },
- //获取表格数据
- async getQuery(data, dat) {
- try {
- const { code, returnData } = await Query({
- id: this.listqueryTemplateID[dat],
- dataContent: data,
- });
- if (code == 0) {
- this.tableData.time = [];
- this.tableData.data1 = [];
- this.tableData.data2 = [];
- this.tableList = JSON.parse(JSON.stringify(returnData.listValues));
- this.tableListcop = JSON.parse(JSON.stringify(returnData.listValues));
- this.total = this.tableList.length;
- this.tableList.forEach((item, index) => {
- item.indexs = index + 1;
- });
- // for (let i = 0; i < 9; i++) {
- // if (!this.tableList[i]) {
- // this.tableList.push({});
- // }
- // }
- this.tableListcop.forEach((item, index) => {
- item.indexs = index + 1;
- });
- // let objar = {
- // indexs: "合计",
- // flightDate: returnData.listValues[0].totalPullFlightNum,
- // pullWeight: returnData.listValues[0].totalPullWeight,
- // };
- this.tableListcop.push(objar);
- returnData.listValues.forEach((element) => {
- this.tableData.data1 = [];
- });
- this.tableData.data1.push(0);
- for (let index = 0; index < this.tableData.data2.length; index++) {
- if (index > 0) {
- const element =
- (this.tableData.data2[index] -
- this.tableData.data2[index - 1]) /
- this.tableData.data2[index - 1];
- this.tableData.data1.push(
- element.toFixed(2) ? element.toFixed(2) : 0
- );
- this.tableData.data1.forEach((element) => {
- element = Number(element);
- if (typeof element !== "number") {
- element = "";
- }
- });
- }
- }
- }
- } catch (error) {
- this.page--;
- }
- },
- //导出
- tableToExcel() {
- import("../../../utils/Export2Excel").then((excel) => {
- // 设置导出表格的头部
- const tHeader = this.listHeader;
- // 将要导出的数据进行一个过滤
- /**
- * 源数据导入到excel的数据每一条重新拼成一个数组,数组里的每个元素就是filterVal里的每个字段
- */
- const data = this.tableListcop.map((item, index) => {
- return [
- item.indexs,
- item.flightDate,
- item.planFlightNum,
- item.finishFlightNum,
- item.ygmNum,
- item.speNum,
- item.receiveSureNum,
- item.securityNum,
- item.addCargoNum,
- item.stowageNum,
- item.depotJoinNum,
- item.planeDownNum,
- item.pullNum,
- item.pullSureNum,
- ];
- });
- data[data.length - 1].indexs = "总计";
- // 调用我们封装好的方法进行导出Excel
- excel.export_json_to_excel({
- // 导出的头部
- header: tHeader,
- // 导出的内容
- data,
- // 导出的文件名称
- filename: this.listname,
- // 导出的表格宽度是否自动
- autoWidth: true,
- // 导出文件的后缀类型
- bookType: "xlsx",
- });
- });
- },
- upset(data) {
- this.picShow = data;
- },
- },
- components: {
- Echarts,
- StatisticsHeader,
- Tableformbrs,
- },
- };
- </script>
- <style lang="scss" scoped>
- .airportInfo {
- position: relative;
- height: 100%;
- :deep(.el-pagination.is-background .el-pager li:not(.is-disabled).is-active) {
- background-color: #ac014d !important; //修改默认的背景色
- }
- .header {
- width: 103%;
- height: 36px;
- display: flex;
- align-items: center;
- justify-content: center;
- background: #f7f7f7;
- position: relative;
- left: -23px;
- > .nav {
- padding: 0 30px 0 30px;
- cursor: pointer;
- font-size: 16px;
- font-family: Microsoft YaHei;
- font-weight: 400;
- color: #101116;
- }
- > .navs {
- height: 100%;
- padding: 0 30px 0 30px;
- cursor: pointer;
- display: flex;
- align-items: center;
- font-size: 16px;
- font-family: Microsoft YaHei;
- font-weight: bold;
- color: #ac014d;
- border-bottom: 2px solid #ac014d;
- }
- }
- .variable {
- width: 100%;
- height: 52px;
- }
- .echart {
- width: 100%;
- height: 746px;
- position: absolute;
- // background: #ffffff;
- // box-shadow: 0px 3px 3px 0px rgba(0, 0, 0, 0.1);
- border-radius: 4px;
- }
- }
- </style>
|