From 9a61e46d96536f3299e57f7259ae1c9972256ec6 Mon Sep 17 00:00:00 2001
From: riku <risaku@163.com>
Date: 星期二, 30 九月 2025 09:42:09 +0800
Subject: [PATCH] 1. 隐藏未完成的账户匹配页面 2. 根据第三方新的接口文档修改接口url地址
---
src/views/fysp/data-product/ProdDailyReport.vue | 344 +++++++++++++++++++++++---------------------------------
1 files changed, 143 insertions(+), 201 deletions(-)
diff --git a/src/views/fysp/data-product/ProdDailyReport.vue b/src/views/fysp/data-product/ProdDailyReport.vue
index ec520f7..510d10a 100644
--- a/src/views/fysp/data-product/ProdDailyReport.vue
+++ b/src/views/fysp/data-product/ProdDailyReport.vue
@@ -1,46 +1,55 @@
<template>
<!-- 涓诲唴瀹� -->
+ <FYSearchBar ref="searchRef" @search="search" :loading="loading">
+ <template #options>
+ <!-- 鍖哄幙 -->
+ <FYOptionLocation
+ :allOption="false"
+ :level="3"
+ :checkStrictly="false"
+ v-model:value="formSearch.locations"
+ style="width: 300px"
+ ></FYOptionLocation>
+ <!-- 鍦烘櫙绫诲瀷 -->
+ <!-- <FYOptionScene
+ :allOption="true"
+ :type="2"
+ v-model:value="formSearch.scenetype"
+ ></FYOptionScene> -->
+ <!-- 鏃堕棿 -->
+ <FYOptionTime
+ :initValue="false"
+ type="datetimerange"
+ v-model:value="formSearch.timeArray"
+ style="width: 250px"
+ ></FYOptionTime>
+ </template>
+ <template #buttons>
+ <el-button
+ icon="Download"
+ type="primary"
+ class=""
+ :loading="docLoading"
+ :disabled="!docParam"
+ @click="genWord()"
+ >
+ 鐢熸垚鎶ュ憡
+ </el-button>
+ <el-button
+ icon="Download"
+ type="success"
+ class=""
+ :disabled="!docParam"
+ @click="exportToExcel()"
+ >
+ 涓嬭浇琛ㄦ牸
+ </el-button>
+ </template>
+ </FYSearchBar>
+
<div class="m-task container">
<!--澶撮儴淇℃伅-->
<div class="h-top col-md-12">
- <div class="options">
- <!-- <input type="date" class="c-time c-check" /> -->
- <!-- 鏃堕棿 -->
- <el-form-item label="鏃堕棿" :prop="prop" style="margin-left: 10px">
- <el-date-picker
- v-model="formSearch.time"
- type="date"
- placeholder="閫夋嫨鏃堕棿"
- start-placeholder="閫夋嫨寮�濮嬫椂闂�"
- end-placeholder="閫夋嫨缁撴潫鏃堕棿"
- style="width: 180px"
- />
- </el-form-item>
- <el-form-item label="鍖哄煙" :prop="prop" style="margin-left: 10px">
- <el-select
- placeholder="Select"
- v-model="formSearch.districtCode"
- class="c-area c-check"
- style="width: 100px"
- >
- <el-option label="閲戝北鍖�" value="310116"></el-option>
- <el-option label="闈欏畨鍖�" value="310106"></el-option>
- <el-option label="寰愭眹鍖�" value="310104"></el-option>
- <el-option label="闀垮畞鍖�" value="310105"></el-option>
- </el-select>
- </el-form-item>
-
- <el-button
- style="margin-left: 10px"
- class="check-msg"
- @click="search"
- type="primary"
- >鏌ヨ</el-button
- >
- <el-button type="primary" class="" @click="exportToExcel()">
- 鐢熸垚鎶ュ憡
- </el-button>
- </div>
<div class="m-top">
<span class="title-input"> {{ reportName }} </span>
<!-- <input
@@ -52,21 +61,10 @@
</div>
<div class="m-msg col-md-12">
- <span
- name="desc"
- class="desc-textarea"
- rows="5"
- value=""
- cols=""
- disabled
- ></span>
+ <span>{{ descMsg }}</span>
<div class="report-table row">
<table id="table_subtask" class="" border="1"></table>
</div>
- </div>
-
- <div class="dark-screen">
- <i class="fa fa-spinner fa-spin fa-3x" style="color: white"></i>
</div>
</div>
</template>
@@ -77,28 +75,13 @@
import * as XLSX from 'xlsx';
import FileSaver from 'file-saver';
import analysisApi from '@/api/fysp/analysisApi.js';
+import { exportDocx } from '@/utils/doc';
+
export default {
name: 'DailyReport',
computed: {
reportName() {
- var city = '';
- switch (this.formSearch.districtCode) {
- case '310116':
- city = '閲戝北鍖�';
- break;
- case '310106':
- city = '闈欏畨鍖�';
- break;
- case '310104':
- city = '寰愭眹鍖�';
- break;
- case '310105':
- city = '闀垮畞鍖�';
- break;
- }
-
- let title = `${city}鎵皹姹℃煋杈呭姪鐩戠宸ヤ綔鏃ユ姤`;
- return title;
+ return `${this.formSearch.locations.dName}鎵皹姹℃煋杈呭姪鐩戠宸ヤ綔鏃ユ姤`;
}
},
data() {
@@ -235,10 +218,18 @@
headers: [],
data: []
},
+ loading: false,
formSearch: {
+ locations: {},
+ scenetype: {},
time: [],
+ timeArray: [new Date(), new Date()],
districtCode: '310116'
- }
+ },
+ descMsg: '',
+ // 瀵煎嚭鎶ュ憡鍙傛暟
+ docParam: undefined,
+ docLoading: false
};
},
watch: {
@@ -365,147 +356,98 @@
`${this.reportName}.xlsx`
);
},
- downloadFile() {
- // 鏂囦欢鏍囬
- let title = this.reportName;
- // 琛ㄥご鎻忚堪
- let desc = document.querySelector('.desc-textarea').textContent;
- // 鏃堕棿
- let time = document
- .querySelector('.desc-textarea')
- .textContent.split('锛�')[0];
-
- // 鑾峰彇鏁版嵁
- let thData = Array.from(document.getElementsByTagName('th')).map(
- (th) => th.innerText
- );
- let tdData = Array.from(document.getElementsByTagName('td')).map(
- (td) => td.innerText
- );
- let totalList = [];
- let subList = [];
- let index = 2;
-
- let inputStatus = true;
- for (let j = 0; j < thData.length; j++) {
- subList.push(thData[j]);
- }
- totalList.push(subList);
- subList = [];
-
- for (let i = 0; i < tdData.length; i++) {
- if (tdData[i] !== String(index)) {
- if (tdData[i] !== '') {
- subList.push(tdData[i]);
- } else {
- if (inputStatus) {
- let inputList = document.querySelectorAll(`.input-${subList[0]}`);
- for (let j = 0; j < inputList.length; j++) {
- subList.push(inputList[j].value);
- }
- inputStatus = false;
- } else {
- inputStatus = true;
- }
- }
- } else {
- totalList.push(subList);
- subList = [String(index)];
- index += 1;
- }
- }
- totalList.push(subList);
-
- // index: 0 head
- // other: data
- // title
-
- let fileData = {
- title: title,
- time: time,
- desc: desc,
- data: totalList
- };
-
- // if (fileData.title && fileData.time && fileData.desc && fileData.data.length) {
- // fetch("http://47.100.191.150:9002/dustmonitor/report", {
- // method: "POST",
- // headers: {
- // "Content-Type": "application/json"
- // },
- // body: JSON.stringify(fileData)
- // })
- // .then(response => response.json())
- // .then(res => {
- // if (res.status === 200) {
- // let name = res.name.split("./")[1];
- // setTimeout(() => {
- // let a = document.createElement("a");
- // a.href = appConfig.downloadUrl + name;
- // a.download = name; // 璁剧疆涓嬭浇鏂囦欢鍚�
- // document.body.appendChild(a);
- // a.click();
- // document.body.removeChild(a);
- // }, 1000);
- // }
- // })
- // .catch(error => console.error("Error:", error));
- // }
- },
search() {
- let sTime = dayjs(this.formSearch.time).hour(0).minute(0).second(0);
- let eTime = dayjs(this.formSearch.time).hour(23).minute(59).second(59);
- eTime = eTime.toISOString();
- sTime = sTime.toISOString();
+ let sTime = dayjs(this.formSearch.timeArray[0])
+ .hour(0)
+ .minute(0)
+ .second(0)
+ .millisecond(0);
+ let eTime = dayjs(this.formSearch.timeArray[1])
+ .hour(23)
+ .minute(59)
+ .second(59)
+ .millisecond(0);
+ // eTime = eTime.toISOString();
+ // sTime = sTime.toISOString();
let config = {
- startTime: sTime,
- endTime: eTime,
- districtCode: this.formSearch.districtCode
+ startTime: sTime.toDate(),
+ endTime: eTime.toDate(),
+ districtCode: this.formSearch.locations.dCode
};
- analysisApi.checkProblem(config).then((res) => {
- this.table.headers = res.tableTitle[0];
- this.table.data = res.tableContent;
+ this.loading = true;
+ analysisApi
+ .dailyreport(config)
+ .then((res) => {
+ this.table.headers = res.tableTitle[0];
+ this.table.data = res.tableContent;
- this.CompTable.init(res.tableTitle[0], res.tableContent);
- this.CompTable.show('table_subtask');
+ this.CompTable.init(res.tableTitle[0], res.tableContent);
+ this.CompTable.show('table_subtask');
- const countMap = new Map(); //鍚勫満鏅暟閲�
- let proCount = 0; //鎬昏闂鏁伴噺
- let changeCount = 0; //鎬昏鏁存敼鏁伴噺
+ const countMap = new Map(); //鍚勫満鏅暟閲�
+ let proCount = 0; //鎬昏闂鏁伴噺
+ let changeCount = 0; //鎬昏鏁存敼鏁伴噺
+ const tableRows = [];
- res.tableContent.forEach((cList) => {
- const sceneType = cList[2];
- if (!(sceneType in countMap)) {
- countMap[sceneType] = 0;
+ res.tableContent.forEach((cList) => {
+ const sceneType = cList[2];
+ if (!(sceneType in countMap)) {
+ countMap[sceneType] = 0;
+ }
+ countMap[sceneType] += 1;
+ proCount += Number(cList[10]);
+ changeCount += Number(cList[13]);
+
+ tableRows.push({
+ sIndex: cList[0],
+ sType: sceneType,
+ sName: cList[3],
+ sLocation: cList[4],
+ sProblemList: cList[8].split('\n'),
+ time: cList[6],
+ sTown: cList[5],
+ sChangeList: cList[11].split('\n')
+ });
+ });
+
+ let countStr = '';
+ for (const key in countMap) {
+ const e = countMap[key];
+ if (countStr != '') {
+ countStr += '銆�';
+ }
+ countStr += `${key}${e}涓猔;
}
- countMap[sceneType] += 1;
- proCount += Number(cList[10]);
- changeCount += Number(cList[13]);
- });
+ this.descMsg = `鍏卞贰鏌�${res.tableContent.length}涓壃灏樺満鏅紙${countStr}锛夛紝鍏卞彂鐜伴棶棰�${proCount}椤癸紝鐫d績鏁存敼浜�${changeCount}椤广�俙;
- let countStr = '';
- for (const key in countMap) {
- const e = countMap[key];
- if (countStr != '') {
- countStr += '銆�';
- }
- countStr += `${key}${e}涓猔;
- }
-
- var descMsg = `鍏卞贰鏌�${res.tableContent.length}涓壃灏樺満鏅紙${countStr}锛夛紝鍏卞彂鐜伴棶棰�${proCount}椤癸紝鐫d績鏁存敼浜�${changeCount}椤癸紱鍓嶆湡浣欑暀闂鍧囧凡閿�椤广�俙;
- console.log('descMsg', descMsg);
-
- // 鑾峰彇鎵�鏈夌被鍚嶄负 'desc-textarea' 鐨勫厓绱�
- const textareas = document.querySelectorAll('.desc-textarea');
-
- // 閬嶅巻杩欎簺鍏冪礌骞惰缃叾 HTML 鍐呭
- textareas.forEach(function (textarea) {
- textarea.innerHTML = descMsg;
- });
- // $('.desc-textarea').html('');
- // $('.desc-textarea').html(descMsg);
- });
+ this.docParam = {
+ month: sTime.month() + 1,
+ day: sTime.date(),
+ index: 1,
+ hasMoreDays: !sTime.isSame(eTime, 'day'),
+ endMonth: eTime.month() + 1,
+ endDay: eTime.date(),
+ totalScene: res.tableContent.length,
+ sceneNumTxt: countStr,
+ proNum: proCount,
+ changeNum: changeCount,
+ unChangeNum: proCount - changeCount,
+ table1: tableRows
+ };
+ })
+ .finally(() => (this.loading = false));
+ },
+ // 鐢熸垚word鎶ュ憡
+ genWord() {
+ if (this.docParam) {
+ const param = this.docParam;
+ exportDocx(
+ '/绉嬪啲瀛g┖姘旇川閲忔敾鍧氬伐浣滄彁绀烘ā鏉�.docx',
+ param,
+ `绉嬪啲瀛g┖姘旇川閲忔敾鍧氬伐浣滄彁绀猴紙${param.month}鏈�${param.day}鏃ワ級.docx`
+ );
+ }
}
}
};
--
Gitblit v1.9.3