From ffa4fdb58442c4e4304d14ec8ac6fb7f34fb4c69 Mon Sep 17 00:00:00 2001 From: spring <2396852758@qq.com> Date: 星期一, 17 二月 2025 09:07:39 +0800 Subject: [PATCH] 修改统计日期传参 --- src/components/view/b4-site-hours-statistics.vue | 398 ++++++----- src/components/view/b4-daily-business-statistics.vue | 687 +++++++++++++-------- src/components/view/b4-inspection-item-statistics.vue | 799 ++++++++++++++---------- 3 files changed, 1,115 insertions(+), 769 deletions(-) diff --git a/src/components/view/b4-daily-business-statistics.vue b/src/components/view/b4-daily-business-statistics.vue index 99b11f8..192cd36 100644 --- a/src/components/view/b4-daily-business-statistics.vue +++ b/src/components/view/b4-daily-business-statistics.vue @@ -1,328 +1,486 @@ <template> -<div class="daily-main" v-loading="loading"> - <div class="daily-content" style="height:100%"> - <div class="time" style="margin-bottom: 10px;"> - <el-radio-group v-model="type" size="small"> - <el-radio-button label="鍛�" ></el-radio-button> - <el-radio-button label="鏈�"></el-radio-button> - <el-radio-button label="骞�"></el-radio-button> - </el-radio-group> - <el-date-picker - v-model="time.week" - type="week" - format="yyyy 绗� WW 鍛�" - placeholder="閫夋嫨鍛�" size="small" v-if="type=='鍛�'" @change="m=>changeTime(type,m)"> - </el-date-picker> - <el-date-picker - v-model="time.month" - type="month" - placeholder="閫夋嫨鏈�" size="small" v-if="type=='鏈�'" @change="m=>changeTime(type,m)"> - </el-date-picker> - <el-date-picker - v-model="time.year" - type="year" - placeholder="閫夋嫨骞�" size="small" v-if="type=='骞�'" @change="m=>changeTime(type,m)"> - </el-date-picker> + <div class="daily-main" v-loading="loading"> + <div class="daily-content" style="height:100%"> + <div class="time" style="margin-bottom: 10px;"> + <el-radio-group v-model="type" size="small"> + <el-radio-button label="鍛�"></el-radio-button> + <el-radio-button label="鏈�"></el-radio-button> + <el-radio-button label="骞�"></el-radio-button> + </el-radio-group> + <el-date-picker + v-model="time.week" + type="week" + format="yyyy 绗� WW 鍛�" + placeholder="閫夋嫨鍛�" + size="small" + v-if="type == '鍛�'" + @change="m => changeTime(type, m)" + > + </el-date-picker> + <el-date-picker + v-model="time.month" + type="month" + placeholder="閫夋嫨鏈�" + size="small" + v-if="type == '鏈�'" + @change="m => changeTime(type, m)" + > + </el-date-picker> + <el-date-picker + v-model="time.year" + type="year" + placeholder="閫夋嫨骞�" + size="small" + v-if="type == '骞�'" + @change="m => changeTime(type, m)" + > + </el-date-picker> + </div> + <el-row :gutter="20"> + <el-col + :xs="12" + :sm="8" + :md="6" + :lg="4" + :xl="4" + style="margin-bottom: 16px;" + > + <div class="daily-card"> + <div class="daily-head"> + <div class="daily-head-left"> + <h4>鏈瑊{ type }}浠诲姟鎺ユ敹</h4> + <span>{{ pageData.RECEIVE }}</span> + </div> + <img src="../../../static/img/daliy-0.svg" alt="" srcset="" /> + </div> + <div class="daily-head-left-info"> + <img + :src=" + `../../../static/img/daliy-${ + pageData.RECEIVE_RATIO < 0 ? 'down' : 'up' + }.svg` + " + alt="" + /> + <span + :class="{ active: pageData.RECEIVE_RATIO < 0 }" + class="num" + v-html="` ${handleData(pageData.RECEIVE_RATIO)}% `" + ></span> + <span style="font-size: 12px;">杈冧笂{{ type }}</span> + </div> + </div> + </el-col> + <el-col + :xs="12" + :sm="8" + :md="6" + :lg="4" + :xl="4" + style="margin-bottom: 16px;" + > + <div class="daily-card"> + <div class="daily-head"> + <div class="daily-head-left"> + <h4>鏈瑊{ type }}浠诲姟瀹屾垚</h4> + <span>{{ pageData.FINISHE }}</span> + </div> + <img src="../../../static/img/daliy-1.svg" alt="" srcset="" /> + </div> + <div class="daily-head-left-info"> + <img + :src=" + `../../../static/img/daliy-${ + pageData.FINISHE_RATIO < 0 ? 'down' : 'up' + }.svg` + " + alt="" + /> + <span + :class="{ active: pageData.FINISHE_RATIO < 0 }" + class="num" + v-html="` ${handleData(pageData.FINISHE_RATIO)}% `" + ></span> + <span style="font-size: 12px;">杈冧笂{{ type }}</span> + </div> + </div> + </el-col> + <el-col + :xs="12" + :sm="8" + :md="6" + :lg="4" + :xl="4" + style="margin-bottom: 16px;" + > + <div class="daily-card"> + <div class="daily-head"> + <div class="daily-head-left"> + <h4>鏈瑊{ type }}浠诲姟鍓╀綑</h4> + <span>{{ pageData.SURPLUS }}</span> + </div> + <img src="../../../static/img/daliy-2.svg" alt="" srcset="" /> + </div> + <div class="daily-head-left-info"> + <img + :src=" + `../../../static/img/daliy-${ + pageData.SURPLUS_RATIO < 0 ? 'down' : 'up' + }.svg` + " + alt="" + /> + <span + :class="{ active: pageData.SURPLUS_RATIO < 0 }" + class="num" + v-html="` ${handleData(pageData.SURPLUS_RATIO)}% `" + ></span> + <span style="font-size: 12px;">杈冧笂{{ type }}</span> + </div> + </div> + </el-col> + <el-col + :xs="12" + :sm="8" + :md="6" + :lg="4" + :xl="4" + style="margin-bottom: 16px;" + > + <div class="daily-card"> + <div class="daily-head"> + <div class="daily-head-left"> + <h4>鏈瑊{ type }}妫�娴嬭垂鐢�</h4> + <span>锟{ handlePrice(pageData.PRICE) }}</span> + </div> + <img src="../../../static/img/daliy-3.svg" alt="" srcset="" /> + </div> + <div class="daily-head-left-info"> + <img + :src=" + `../../../static/img/daliy-${ + pageData.PRICE_RATIO < 0 ? 'down' : 'up' + }.svg` + " + alt="" + /> + <span + :class="{ active: pageData.PRICE_RATIO < 0 }" + class="num" + v-html="` ${handleData(pageData.PRICE_RATIO)}% `" + ></span> + <span style="font-size: 12px;">杈冧笂{{ type }}</span> + </div> + </div> + </el-col> + <el-col + :xs="12" + :sm="8" + :md="6" + :lg="4" + :xl="4" + style="margin-bottom: 16px;" + > + <div class="daily-card"> + <div class="daily-head"> + <div class="daily-head-left"> + <h4>鏈瑊{ type }}妫�娴嬪伐鏃�</h4> + <span>{{ pageData.COST }}</span> + </div> + <img src="../../../static/img/daliy-4.svg" alt="" srcset="" /> + </div> + <div class="daily-head-left-info"> + <img + :src=" + `../../../static/img/daliy-${ + pageData.COST_RATIO < 0 ? 'down' : 'up' + }.svg` + " + alt="" + /> + <span + :class="{ active: pageData.COST_RATIO < 0 }" + class="num" + v-html="` ${handleData(pageData.COST_RATIO)}% `" + ></span> + <span style="font-size: 12px;">杈冧笂{{ type }}</span> + </div> + </div> + </el-col> + <el-col + :xs="12" + :sm="8" + :md="6" + :lg="4" + :xl="4" + style="margin-bottom: 16px;" + > + <div class="daily-card"> + <div class="daily-head"> + <div class="daily-head-left"> + <h4>鏈瑊{ type }}妫�娴嬩汉鍛�</h4> + <span>{{ pageData.PERSON }}</span> + </div> + <img src="../../../static/img/daliy-5.svg" alt="" srcset="" /> + </div> + <div class="daily-head-left-info"> + <img + :src=" + `../../../static/img/daliy-${ + pageData.PERSON_RATIO < 0 ? 'down' : 'up' + }.svg` + " + alt="" + /> + <span + :class="{ active: pageData.PERSON_RATIO < 0 }" + class="num" + v-html="` ${handleData(pageData.PERSON_RATIO)}% `" + ></span> + <span style="font-size: 12px;">杈冧笂{{ type }}</span> + </div> + </div> + </el-col> + </el-row> + <el-row :gutter="20" style="height: calc(100% - 200px);"> + <el-col + :xs="24" + :sm="24" + :md="12" + :lg="12" + :xl="12" + style="margin-bottom: 16px;height: 100%;" + > + <div class="daily-card chart-box" style="height: 100%;"> + <h4>鏈瑊{ type }}浠诲姟鎺ユ敹閲�</h4> + <echart-module + :id="'daily-left'" + :config="chartConfig0" + :datas="chartData0" + style="height: calc(100% - 32px);" + ></echart-module> + </div> + </el-col> + <el-col + :xs="24" + :sm="24" + :md="12" + :lg="12" + :xl="12" + style="margin-bottom: 16px;height: 100%;" + > + <div class="daily-card chart-box" style="height: 100%;"> + <h4>鏈瑊{ type }}瀹為檯瀹屾垚浠诲姟涓庢帴鏀朵换鍔″姣�</h4> + <echart-module + :id="'daily-right'" + :config="chartConfig1" + :datas="chartData1" + style="height: calc(100% - 32px);" + ></echart-module> + </div> + </el-col> + </el-row> </div> - <el-row :gutter="20"> - <el-col :xs="12" :sm="8" :md="6" :lg="4" :xl="4" style="margin-bottom: 16px;"> - <div class="daily-card"> - <div class="daily-head"> - <div class="daily-head-left"> - <h4>鏈瑊{type}}浠诲姟鎺ユ敹</h4> - <span>{{ pageData.RECEIVE }}</span> - </div> - <img src="../../../static/img/daliy-0.svg" alt="" srcset=""> - </div> - <div class="daily-head-left-info"> - <img :src="`../../../static/img/daliy-${pageData.RECEIVE_RATIO<0?'down':'up'}.svg`" alt=""> - <span :class="{active:pageData.RECEIVE_RATIO<0}" class="num" v-html="` ${handleData(pageData.RECEIVE_RATIO)}% `"></span> - <span style="font-size: 12px;">杈冧笂{{type}}</span> - </div> - </div> - </el-col> - <el-col :xs="12" :sm="8" :md="6" :lg="4" :xl="4" style="margin-bottom: 16px;"> - <div class="daily-card"> - <div class="daily-head"> - <div class="daily-head-left"> - <h4>鏈瑊{type}}浠诲姟瀹屾垚</h4> - <span >{{ pageData.FINISHE }}</span> - </div> - <img src="../../../static/img/daliy-1.svg" alt="" srcset=""> - </div> - <div class="daily-head-left-info"> - <img :src="`../../../static/img/daliy-${pageData.FINISHE_RATIO<0?'down':'up'}.svg`" alt=""> - <span :class="{active:pageData.FINISHE_RATIO<0}" class="num" v-html="` ${handleData(pageData.FINISHE_RATIO)}% `"></span> - <span style="font-size: 12px;">杈冧笂{{type}}</span> - </div> - </div> - </el-col> - <el-col :xs="12" :sm="8" :md="6" :lg="4" :xl="4" style="margin-bottom: 16px;"> - <div class="daily-card"> - <div class="daily-head"> - <div class="daily-head-left"> - <h4>鏈瑊{type}}浠诲姟鍓╀綑</h4> - <span >{{ pageData.SURPLUS }}</span> - </div> - <img src="../../../static/img/daliy-2.svg" alt="" srcset=""> - </div> - <div class="daily-head-left-info"> - <img :src="`../../../static/img/daliy-${pageData.SURPLUS_RATIO<0?'down':'up'}.svg`" alt=""> - <span :class="{active:pageData.SURPLUS_RATIO<0}" class="num" v-html="` ${handleData(pageData.SURPLUS_RATIO)}% `"></span> - <span style="font-size: 12px;">杈冧笂{{type}}</span> - </div> - </div> - </el-col> - <el-col :xs="12" :sm="8" :md="6" :lg="4" :xl="4" style="margin-bottom: 16px;"> - <div class="daily-card"> - <div class="daily-head"> - <div class="daily-head-left"> - <h4>鏈瑊{type}}妫�娴嬭垂鐢�</h4> - <span>锟{ handlePrice(pageData.PRICE) }}</span> - </div> - <img src="../../../static/img/daliy-3.svg" alt="" srcset=""> - </div> - <div class="daily-head-left-info"> - <img :src="`../../../static/img/daliy-${pageData.PRICE_RATIO<0?'down':'up'}.svg`" alt=""> - <span :class="{active:pageData.PRICE_RATIO<0}" class="num" v-html="` ${handleData(pageData.PRICE_RATIO)}% `"></span> - <span style="font-size: 12px;">杈冧笂{{type}}</span> - </div> - </div> - </el-col> - <el-col :xs="12" :sm="8" :md="6" :lg="4" :xl="4" style="margin-bottom: 16px;"> - <div class="daily-card"> - <div class="daily-head"> - <div class="daily-head-left"> - <h4>鏈瑊{type}}妫�娴嬪伐鏃�</h4> - <span>{{pageData.COST}}</span> - </div> - <img src="../../../static/img/daliy-4.svg" alt="" srcset=""> - </div> - <div class="daily-head-left-info"> - <img :src="`../../../static/img/daliy-${pageData.COST_RATIO<0?'down':'up'}.svg`" alt=""> - <span :class="{active:pageData.COST_RATIO<0}" class="num" v-html="` ${handleData(pageData.COST_RATIO)}% `"></span> - <span style="font-size: 12px;">杈冧笂{{type}}</span> - </div> - </div> - </el-col> - <el-col :xs="12" :sm="8" :md="6" :lg="4" :xl="4" style="margin-bottom: 16px;"> - <div class="daily-card"> - <div class="daily-head"> - <div class="daily-head-left"> - <h4>鏈瑊{type}}妫�娴嬩汉鍛�</h4> - <span >{{ pageData.PERSON }}</span> - </div> - <img src="../../../static/img/daliy-5.svg" alt="" srcset=""> - </div> - <div class="daily-head-left-info"> - <img :src="`../../../static/img/daliy-${pageData.PERSON_RATIO<0?'down':'up'}.svg`" alt=""> - <span :class="{active:pageData.PERSON_RATIO<0}" class="num" v-html="` ${handleData(pageData.PERSON_RATIO)}% `"></span> - <span style="font-size: 12px;">杈冧笂{{type}}</span> - </div> - </div> - </el-col> - </el-row> - <el-row :gutter="20" style="height: calc(100% - 200px);"> - <el-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12" style="margin-bottom: 16px;height: 100%;"> - <div class="daily-card chart-box" style="height: 100%;"> - <h4>鏈瑊{type}}浠诲姟鎺ユ敹閲�</h4> - <echart-module :id="'daily-left'" :config="chartConfig0" :datas="chartData0" style="height: calc(100% - 32px);"></echart-module> - </div> - </el-col> - <el-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12" style="margin-bottom: 16px;height: 100%;"> - <div class="daily-card chart-box" style="height: 100%;"> - <h4>鏈瑊{type}}瀹為檯瀹屾垚浠诲姟涓庢帴鏀朵换鍔″姣�</h4> - <echart-module :id="'daily-right'" :config="chartConfig1" :datas="chartData1" style="height: calc(100% - 32px);"></echart-module> - </div> - </el-col> - </el-row> </div> -</div> </template> <script> - -import EchartModule from '../tool/echart.vue' -import { - getYearAndMonthAndDays - } from '../../util/date' +import EchartModule from "../tool/echart.vue"; +import { getYearAndMonthAndDays } from "../../util/date"; export default { - components: {EchartModule}, - data(){ - return{ - chartConfig0:{ - height: '', - isLoading:false, - type:'line' + components: { EchartModule }, + data() { + return { + chartConfig0: { + height: "", + isLoading: false, + type: "line" }, - chartData0:{ - xData:[], - yData:[ + chartData0: { + xData: [], + yData: [ { - title:'浠诲姟鎺ユ敹閲�', - data:[] + title: "浠诲姟鎺ユ敹閲�", + data: [] } ] }, - chartConfig1:{ - height: '', - isLoading:false, - type:'bar' + chartConfig1: { + height: "", + isLoading: false, + type: "bar" }, - chartData1:{ - xData:[], - yData:[ + chartData1: { + xData: [], + yData: [ { - title:'鎺ユ敹', - data:[] + title: "鎺ユ敹", + data: [] }, { - title:'瀹屾垚', - data:[] - }, + title: "瀹屾垚", + data: [] + } ] }, - pageData:{}, - loading:false, - timers:null, - type:'鍛�', - time:{ - week:'', - month:'', - year:'', + pageData: {}, + loading: false, + timers: null, + type: "鍛�", + time: { + week: "", + month: "", + year: "" }, - startTime:'', - endTime:'' - } + startTime: "", + endTime: "" + }; }, - watch:{ - type(val){ - switch(val){ - case '鍛�': - this.time.week = new Date() - this.changeTime(val,this.time.week) + watch: { + type(val) { + switch (val) { + case "鍛�": + this.time.week = new Date(); + this.changeTime(val, this.time.week); break; - case '鏈�': - this.time.month = new Date() - this.changeTime(val,this.time.month) + case "鏈�": + this.time.month = new Date(); + this.changeTime(val, this.time.month); break; - case '骞�': - this.time.year = new Date() - this.changeTime(val,this.time.year) + case "骞�": + this.time.year = new Date(); + this.changeTime(val, this.time.year); break; } } }, - mounted(){ - this.changeTime(this.type) + mounted() { + this.changeTime(this.type); // this.timers&&clearInterval(this.timers); // setInterval(this.changeTime(this.type),1000*60*5) }, - methods:{ - init(){ - this.chartConfig0.isLoading = false - this.chartConfig1.isLoading = false + methods: { + init() { + this.chartConfig0.isLoading = false; + this.chartConfig1.isLoading = false; this.loading = true; - this.$axios.get(this.$api.report.businessStatisticsByDay+'?startTime='+this.startTime+'&endTime='+this.endTime+'&type='+this.type).then(res => { - if (res.code == 201) return - this.pageData = this.HaveJson(res.data) - console.log(3333,res.data) - let xData = res.data.DAYS.map(m=>{ - let arr = m.split('-') - if(this.type=='骞�'){ - return `${arr[1]}鏈坄 - }else{ - return `${arr[1]}-${arr[2]}` - } - }) - this.chartData0.xData = xData - this.chartData1.xData = xData - this.chartData0.yData[0].data = this.pageData.RECETENDAYS - this.chartData1.yData[0].data = this.pageData.RECETENDAYS - this.chartData1.yData[1].data = this.pageData.FINISHTENDAYS - this.loading = false; - this.chartConfig0.isLoading = true - this.chartConfig1.isLoading = true - }) + this.$axios + .get( + this.$api.report.businessStatisticsByDay + + "?startTime=" + + this.startTime + + "&endTime=" + + this.endTime + + "&type=" + + this.type + ) + .then(res => { + if (res.code == 201) return; + this.pageData = this.HaveJson(res.data); + let xData = res.data.DAYS.map(m => { + let arr = m.split("-"); + if (this.type == "骞�") { + return `${arr[1]}鏈坄; + } else { + return `${arr[1]}-${arr[2]}`; + } + }); + this.chartData0.xData = xData; + this.chartData1.xData = xData; + this.chartData0.yData[0].data = this.pageData.RECETENDAYS; + this.chartData1.yData[0].data = this.pageData.RECETENDAYS; + this.chartData1.yData[1].data = this.pageData.FINISHTENDAYS; + this.loading = false; + this.chartConfig0.isLoading = true; + this.chartConfig1.isLoading = true; + }); }, - handleData(val){ - if(val){ - let num = Math.abs(val)*100 + handleData(val) { + if (val) { + let num = Math.abs(val) * 100; return num.toFixed(0); - }else{ - return '0' + } else { + return "0"; } }, - changeTime(type,m){ - if(m){ - switch(type){ - case '鍛�': - this.startTime = getYearAndMonthAndDays(new Date(this.time.week.getTime() - 24 * 60 * 60 * 1000)) - this.endTime = getYearAndMonthAndDays(new Date(this.time.week.getTime() + 24 * 60 * 60 * 1000 * 5)) + changeTime(type, m) { + if (m) { + switch (type) { + case "鍛�": + this.startTime = getYearAndMonthAndDays( + new Date(this.time.week.getTime() - 24 * 60 * 60 * 1000) + ); + this.endTime = getYearAndMonthAndDays( + new Date(this.time.week.getTime() + 24 * 60 * 60 * 1000 * 5) + ); break; - case '鏈�': + case "鏈�": const year = new Date(this.time.month).getFullYear(); - const month = new Date(this.time.month).getMonth(); - const day = new Date(year, month + 1, 0).getDate(); // + const month = new Date(this.time.month).getMonth() + 1; + const day = new Date(year, month, 0).getDate(); // // 璁剧疆璧峰鏃ユ湡鍜岀粨鏉熸棩鏈� - this.startTime = `${year}-${month + 1}-01` - this.endTime = `${year}-${month + 1}-${day}` // 鏈堟湯 + this.startTime = `${year}-${month > 9 ? "0" + month : month}-01`; + this.endTime = `${year}-${month > 9 ? "0" + month : month}-${day}`; // 鏈堟湯 break; - case '骞�': + case "骞�": const year0 = new Date(this.time.year).getFullYear(); this.startTime = `${year0}-01-01`; // 骞村垵 this.endTime = `${year0}-12-31`; // 骞存湯 break; } - }else{ - this.startTime = getYearAndMonthAndDays(new Date((new Date).getTime() - 24 * 60 * 60 * 1000)) - this.endTime = getYearAndMonthAndDays(new Date((new Date).getTime() + 24 * 60 * 60 * 1000 * 5)) - this.time.week = new Date() + } else { + this.startTime = getYearAndMonthAndDays( + new Date(new Date().getTime() - 24 * 60 * 60 * 1000) + ); + this.endTime = getYearAndMonthAndDays( + new Date(new Date().getTime() + 24 * 60 * 60 * 1000 * 5) + ); + this.time.week = new Date(); } - this.init() + this.init(); }, - handlePrice(val){ - if(val>999999){ - return (val/1000000).toFixed(2)+'鐧句竾'; - }else if(val>9999){ - return (val/10000).toFixed(2)+'涓�'; - }else{ + handlePrice(val) { + if (val > 999999) { + return (val / 1000000).toFixed(2) + "鐧句竾"; + } else if (val > 9999) { + return (val / 10000).toFixed(2) + "涓�"; + } else { return val; } } }, - deactivated(){ - this.timers&&clearInterval(this.timers); + deactivated() { + this.timers && clearInterval(this.timers); } -} +}; </script> <style scoped> -.daily-main{ +.daily-main { height: 100%; overflow-y: auto; overflow-x: hidden; } -.daily-content{ +.daily-content { padding: 20px 0; box-sizing: border-box; } -.daily-card{ +.daily-card { width: 100%; - background: #FFFFFF; + background: #ffffff; border-radius: 14px; - box-shadow: 6px 6px 54px 0px rgba(0,0,0,0.05); + box-shadow: 6px 6px 54px 0px rgba(0, 0, 0, 0.05); padding: 16px; box-sizing: border-box; } -.daily-head{ +.daily-head { display: flex; justify-content: space-between; align-items: flex-start; } -.daily-head-left h4{ +.daily-head-left h4 { color: #202224; font-size: 16px; font-weight: 400; @@ -330,34 +488,35 @@ opacity: 0.8; } -.daily-head-left>span{ - font-family: Nunito Sans-Bold;color: #202224; +.daily-head-left > span { + font-family: Nunito Sans-Bold; + color: #202224; font-weight: bold; font-size: 24px; display: inline-block; margin-bottom: 12px; } -.daily-head-left-info{ +.daily-head-left-info { display: flex; align-items: center; font-size: 16px; color: #202224; } -.num{ - color: #00B69B; +.num { + color: #00b69b; } -.num.active{ - color: #F93C65; +.num.active { + color: #f93c65; } -.chart-box{ +.chart-box { padding: 16px 24px; box-sizing: border-box; } -.chart-box h4{ +.chart-box h4 { color: #202224; font-family: PingFang SC-Regular; font-weight: 400; @@ -365,7 +524,7 @@ margin-bottom: 16px; } -.chart{ +.chart { width: 100%; height: 450px; } diff --git a/src/components/view/b4-inspection-item-statistics.vue b/src/components/view/b4-inspection-item-statistics.vue index 5654875..e356bfe 100644 --- a/src/components/view/b4-inspection-item-statistics.vue +++ b/src/components/view/b4-inspection-item-statistics.vue @@ -3,7 +3,7 @@ <div class="inspection-content" style="height:100%"> <div class="time" style="margin-bottom: 10px;"> <el-radio-group v-model="type" size="small"> - <el-radio-button label="鍛�" ></el-radio-button> + <el-radio-button label="鍛�"></el-radio-button> <el-radio-button label="鏈�"></el-radio-button> <el-radio-button label="骞�"></el-radio-button> </el-radio-group> @@ -11,401 +11,558 @@ v-model="time.week" type="week" format="yyyy 绗� WW 鍛�" - placeholder="閫夋嫨鍛�" size="small" v-if="type=='鍛�'" @change="m=>changeTime(type,m)"> + placeholder="閫夋嫨鍛�" + size="small" + v-if="type == '鍛�'" + @change="m => changeTime(type, m)" + > </el-date-picker> <el-date-picker v-model="time.month" type="month" - placeholder="閫夋嫨鏈�" size="small" v-if="type=='鏈�'" @change="m=>changeTime(type,m)"> + placeholder="閫夋嫨鏈�" + size="small" + v-if="type == '鏈�'" + @change="m => changeTime(type, m)" + > </el-date-picker> <el-date-picker v-model="time.year" type="year" - placeholder="閫夋嫨骞�" size="small" v-if="type=='骞�'" @change="m=>changeTime(type,m)"> + placeholder="閫夋嫨骞�" + size="small" + v-if="type == '骞�'" + @change="m => changeTime(type, m)" + > </el-date-picker> </div> <el-row :gutter="20"> - <el-col :xs="12" :sm="8" :md="6" :lg="4" :xl="4" style="margin-bottom: 16px;"> + <el-col + :xs="12" + :sm="8" + :md="6" + :lg="4" + :xl="4" + style="margin-bottom: 16px;" + > <div class="inspection-card"> <div class="inspection-head"> <div class="inspection-head-left"> - <h4>鏈瑊{type}}椤圭洰鎺ユ敹</h4> - <span >{{ pageData.RECEVICE }}</span> + <h4>鏈瑊{ type }}椤圭洰鎺ユ敹</h4> + <span>{{ pageData.RECEVICE }}</span> </div> - <img src="../../../static/img/daliy-0.svg" alt="" srcset=""> + <img src="../../../static/img/daliy-0.svg" alt="" srcset="" /> </div> <div class="inspection-head-left-info"> - <img :src="`../../../static/img/daliy-${pageData.RECEIVE_RATIO<0?'down':'up'}.svg`" alt=""> - <span :class="{active:pageData.RECEIVE_RATIO<0}" class="num" v-html="` ${handleData(pageData.RECEIVE_RATIO)}% `"></span> - <span style="font-size: 12px;">杈冧笂{{type}}</span> + <img + :src=" + `../../../static/img/daliy-${ + pageData.RECEIVE_RATIO < 0 ? 'down' : 'up' + }.svg` + " + alt="" + /> + <span + :class="{ active: pageData.RECEIVE_RATIO < 0 }" + class="num" + v-html="` ${handleData(pageData.RECEIVE_RATIO)}% `" + ></span> + <span style="font-size: 12px;">杈冧笂{{ type }}</span> </div> </div> </el-col> - <el-col :xs="12" :sm="8" :md="6" :lg="4" :xl="4" style="margin-bottom: 16px;"> + <el-col + :xs="12" + :sm="8" + :md="6" + :lg="4" + :xl="4" + style="margin-bottom: 16px;" + > <div class="inspection-card"> <div class="inspection-head"> <div class="inspection-head-left"> - <h4>鏈瑊{type}}椤圭洰瀹屾垚</h4> - <span >{{ pageData.FINISHE }}</span> + <h4>鏈瑊{ type }}椤圭洰瀹屾垚</h4> + <span>{{ pageData.FINISHE }}</span> </div> - <img src="../../../static/img/daliy-1.svg" alt="" srcset=""> + <img src="../../../static/img/daliy-1.svg" alt="" srcset="" /> </div> <div class="inspection-head-left-info"> - <img :src="`../../../static/img/daliy-${pageData.FINISHE_RATIO<0?'down':'up'}.svg`" alt=""> - <span :class="{active:pageData.FINISHE_RATIO<0}" class="num" v-html="` ${handleData(pageData.FINISHE_RATIO)}% `"></span> - <span style="font-size: 12px;">杈冧笂{{type}}</span> + <img + :src=" + `../../../static/img/daliy-${ + pageData.FINISHE_RATIO < 0 ? 'down' : 'up' + }.svg` + " + alt="" + /> + <span + :class="{ active: pageData.FINISHE_RATIO < 0 }" + class="num" + v-html="` ${handleData(pageData.FINISHE_RATIO)}% `" + ></span> + <span style="font-size: 12px;">杈冧笂{{ type }}</span> </div> </div> </el-col> - <el-col :xs="12" :sm="8" :md="6" :lg="4" :xl="4" style="margin-bottom: 16px;"> + <el-col + :xs="12" + :sm="8" + :md="6" + :lg="4" + :xl="4" + style="margin-bottom: 16px;" + > <div class="inspection-card"> <div class="inspection-head"> <div class="inspection-head-left"> - <h4>鏈瑊{type}}椤圭洰鍓╀綑</h4> - <span >{{ pageData.SURPLUS }}</span> + <h4>鏈瑊{ type }}椤圭洰鍓╀綑</h4> + <span>{{ pageData.SURPLUS }}</span> </div> - <img src="../../../static/img/daliy-2.svg" alt="" srcset=""> + <img src="../../../static/img/daliy-2.svg" alt="" srcset="" /> </div> <div class="inspection-head-left-info"> - <img :src="`../../../static/img/daliy-${pageData.SURPLUS_RATIO<0?'down':'up'}.svg`" alt=""> - <span :class="{active:pageData.SURPLUS_RATIO<0}" class="num" v-html="` ${handleData(pageData.SURPLUS_RATIO)}% `"></span> - <span style="font-size: 12px;">杈冧笂{{type}}</span> + <img + :src=" + `../../../static/img/daliy-${ + pageData.SURPLUS_RATIO < 0 ? 'down' : 'up' + }.svg` + " + alt="" + /> + <span + :class="{ active: pageData.SURPLUS_RATIO < 0 }" + class="num" + v-html="` ${handleData(pageData.SURPLUS_RATIO)}% `" + ></span> + <span style="font-size: 12px;">杈冧笂{{ type }}</span> </div> </div> </el-col> - <el-col :xs="12" :sm="8" :md="6" :lg="4" :xl="4" style="margin-bottom: 16px;"> - <div class="inspection-card inspection-head" style="flex-direction: column;padding-bottom: 5px;"> - <h4 style="margin-bottom: 5px;">鏈瑊{type}}椤圭洰鍚堟牸鐜�</h4> - <echart-module :id="'inspection-qualified'" :config="chartConfig2" :datas="chartData2" style="align-self: center;"></echart-module> + <el-col + :xs="12" + :sm="8" + :md="6" + :lg="4" + :xl="4" + style="margin-bottom: 16px;" + > + <div + class="inspection-card inspection-head" + style="flex-direction: column;padding-bottom: 5px;" + > + <h4 style="margin-bottom: 5px;">鏈瑊{ type }}椤圭洰鍚堟牸鐜�</h4> + <echart-module + :id="'inspection-qualified'" + :config="chartConfig2" + :datas="chartData2" + style="align-self: center;" + ></echart-module> </div> </el-col> - <el-col :xs="12" :sm="8" :md="6" :lg="4" :xl="4" style="margin-bottom: 16px;"> - <div class="inspection-card inspection-head" style="flex-direction: column;padding-bottom: 5px;"> - <h4 style="margin-bottom: 5px;">鏈瑊{type}}椤圭洰瀹屾垚鐜�</h4> - <echart-module :id="'inspection-complete'" :config="chartConfig3" :datas="chartData3" style="align-self: center;"></echart-module> + <el-col + :xs="12" + :sm="8" + :md="6" + :lg="4" + :xl="4" + style="margin-bottom: 16px;" + > + <div + class="inspection-card inspection-head" + style="flex-direction: column;padding-bottom: 5px;" + > + <h4 style="margin-bottom: 5px;">鏈瑊{ type }}椤圭洰瀹屾垚鐜�</h4> + <echart-module + :id="'inspection-complete'" + :config="chartConfig3" + :datas="chartData3" + style="align-self: center;" + ></echart-module> </div> </el-col> - <el-col :xs="12" :sm="8" :md="6" :lg="4" :xl="4" style="margin-bottom: 16px;"> - <div class="inspection-card inspection-head" style="flex-direction: column;padding-bottom: 5px;"> - <h4 style="margin-bottom: 5px;">鏈瑊{type}}椤圭洰寤舵湡鐜�</h4> - <echart-module :id="'inspection-extension'" :config="chartConfig4" :datas="chartData4" style="align-self: center;"></echart-module> + <el-col + :xs="12" + :sm="8" + :md="6" + :lg="4" + :xl="4" + style="margin-bottom: 16px;" + > + <div + class="inspection-card inspection-head" + style="flex-direction: column;padding-bottom: 5px;" + > + <h4 style="margin-bottom: 5px;">鏈瑊{ type }}椤圭洰寤舵湡鐜�</h4> + <echart-module + :id="'inspection-extension'" + :config="chartConfig4" + :datas="chartData4" + style="align-self: center;" + ></echart-module> </div> </el-col> </el-row> <el-row :gutter="20" style="height: calc(100% - 200px);"> - <el-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12" style="margin-bottom: 16px; height: 100%;"> + <el-col + :xs="24" + :sm="24" + :md="12" + :lg="12" + :xl="12" + style="margin-bottom: 16px; height: 100%;" + > <div class="inspection-card chart-box" style="height: 100%;"> - <h4>鏈瑊{type}}椤圭洰鎺ユ敹閲�</h4> - <echart-module :id="'inspection-left'" :config="chartConfig0" :datas="chartData0" style="height: calc(100% - 32px);"></echart-module> + <h4>鏈瑊{ type }}椤圭洰鎺ユ敹閲�</h4> + <echart-module + :id="'inspection-left'" + :config="chartConfig0" + :datas="chartData0" + style="height: calc(100% - 32px);" + ></echart-module> </div> </el-col> - <el-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12" style="margin-bottom: 16px;height: 100%;"> + <el-col + :xs="24" + :sm="24" + :md="12" + :lg="12" + :xl="12" + style="margin-bottom: 16px;height: 100%;" + > <div class="inspection-card chart-box" style="height: 100%;"> - <h4>鏈瑊{type}}瀹為檯瀹屾垚椤圭洰涓庢帴鏀堕」鐩姣�</h4> - <echart-module :id="'inspection-right'" :config="chartConfig1" :datas="chartData1" style="height: calc(100% - 32px);"></echart-module> + <h4>鏈瑊{ type }}瀹為檯瀹屾垚椤圭洰涓庢帴鏀堕」鐩姣�</h4> + <echart-module + :id="'inspection-right'" + :config="chartConfig1" + :datas="chartData1" + style="height: calc(100% - 32px);" + ></echart-module> </div> </el-col> </el-row> </div> </div> - </template> +</template> - <script> - - import EchartModule from '../tool/echart.vue' - import { - getYearAndMonthAndDays - } from '../../util/date' - export default { - components: {EchartModule}, - data(){ - return{ - chartConfig0:{ - height: '', - isLoading:true, - type:'line' - }, - chartData0:{ - xData:[], - yData:[ - { - title:'椤圭洰鎺ユ敹閲�', - data:[] - } - ] - }, - chartConfig1:{ - height: '', - isLoading:true, - type:'bar' - }, - chartData1:{ - xData:[], - yData:[ - { - title:'鎺ユ敹', - data:[] - }, - { - title:'瀹屾垚', - data:[] - }, - ] - }, - chartConfig2:{ - height: '103px', - width:'140px', - isLoading:true, - type:'pie' - }, - chartData2:{ - title:'椤圭洰鍚堟牸鐜�', - percentage:'0', - color:['#1CCAB8','#E1E4E8'], - data:[ - { - name:'鍚堟牸', - value:'0' - }, - { - name:'涓嶅悎鏍�', - value:'0' - }, - ] - }, - chartConfig3:{ - height: '103px', - width:'140px', - isLoading:true, - type:'pie' - }, - chartData3:{ - title:'椤圭洰瀹屾垚鐜�', - percentage:'0', - color:['#FBB647','#E1E4E8'], - data:[ - { - name:'瀹屾垚', - value:'0' - }, - { - name:'鏈畬鎴�', - value:'0' - }, - ] - }, - chartConfig4:{ - height: '103px', - width:'140px', - isLoading:true, - type:'pie' - }, - chartData4:{ - title:'椤瑰欢鏈熺巼', - percentage:'0', - color:['#FF3838','#E1E4E8'], - data:[ - { - name:'寤舵湡', - value:'0' - }, - { - name:'鏈欢鏈�', - value:'0' - }, - ] - }, - loading:false, - pageData:{}, - timers:null, - type:'鍛�', - time:{ - week:'', - month:'', - year:'', - }, - startTime:'', - endTime:'' - } - }, - watch:{ - type(val){ - switch(val){ - case '鍛�': - this.time.week = new Date() - this.changeTime(val,this.time.week) +<script> +import EchartModule from "../tool/echart.vue"; +import { getYearAndMonthAndDays } from "../../util/date"; +export default { + components: { EchartModule }, + data() { + return { + chartConfig0: { + height: "", + isLoading: true, + type: "line" + }, + chartData0: { + xData: [], + yData: [ + { + title: "椤圭洰鎺ユ敹閲�", + data: [] + } + ] + }, + chartConfig1: { + height: "", + isLoading: true, + type: "bar" + }, + chartData1: { + xData: [], + yData: [ + { + title: "鎺ユ敹", + data: [] + }, + { + title: "瀹屾垚", + data: [] + } + ] + }, + chartConfig2: { + height: "103px", + width: "140px", + isLoading: true, + type: "pie" + }, + chartData2: { + title: "椤圭洰鍚堟牸鐜�", + percentage: "0", + color: ["#1CCAB8", "#E1E4E8"], + data: [ + { + name: "鍚堟牸", + value: "0" + }, + { + name: "涓嶅悎鏍�", + value: "0" + } + ] + }, + chartConfig3: { + height: "103px", + width: "140px", + isLoading: true, + type: "pie" + }, + chartData3: { + title: "椤圭洰瀹屾垚鐜�", + percentage: "0", + color: ["#FBB647", "#E1E4E8"], + data: [ + { + name: "瀹屾垚", + value: "0" + }, + { + name: "鏈畬鎴�", + value: "0" + } + ] + }, + chartConfig4: { + height: "103px", + width: "140px", + isLoading: true, + type: "pie" + }, + chartData4: { + title: "椤瑰欢鏈熺巼", + percentage: "0", + color: ["#FF3838", "#E1E4E8"], + data: [ + { + name: "寤舵湡", + value: "0" + }, + { + name: "鏈欢鏈�", + value: "0" + } + ] + }, + loading: false, + pageData: {}, + timers: null, + type: "鍛�", + time: { + week: "", + month: "", + year: "" + }, + startTime: "", + endTime: "" + }; + }, + watch: { + type(val) { + switch (val) { + case "鍛�": + this.time.week = new Date(); + this.changeTime(val, this.time.week); break; - case '鏈�': - this.time.month = new Date() - this.changeTime(val,this.time.month) + case "鏈�": + this.time.month = new Date(); + this.changeTime(val, this.time.month); break; - case '骞�': - this.time.year = new Date() - this.changeTime(val,this.time.year) + case "骞�": + this.time.year = new Date(); + this.changeTime(val, this.time.year); break; } } }, - mounted(){ - this.changeTime(this.type) - // this.timers&&clearInterval(this.timers); - // setInterval(this.changeTime(this.type),1000*60*5) - }, - methods:{ - init(){ - this.chartConfig0.isLoading = false - this.chartConfig1.isLoading = false - this.chartConfig2.isLoading = false - this.chartConfig3.isLoading = false - this.chartConfig4.isLoading = false + mounted() { + this.changeTime(this.type); + // this.timers&&clearInterval(this.timers); + // setInterval(this.changeTime(this.type),1000*60*5) + }, + methods: { + init() { + this.chartConfig0.isLoading = false; + this.chartConfig1.isLoading = false; + this.chartConfig2.isLoading = false; + this.chartConfig3.isLoading = false; + this.chartConfig4.isLoading = false; this.loading = true; - this.$axios.get(this.$api.report.testProductByDay+'?startTime='+this.startTime+'&endTime='+this.endTime+'&type='+this.type).then(res => { - if (res.code == 201) return - this.pageData = this.HaveJson(res.data) - let xData = res.data.DAYS.map(m=>{ - let arr = m.split('-') - if(this.type=='骞�'){ - return `${arr[1]}鏈坄 - }else{ - return `${arr[1]}-${arr[2]}` - } - }) - this.chartData0.xData = xData - this.chartData1.xData = xData - this.chartData0.yData[0].data = this.pageData.RECETENDAYS - this.chartData1.yData[0].data = this.pageData.RECETENDAYS - this.chartData1.yData[1].data = this.pageData.FINISHTENDAYS - this.chartData2.percentage = (this.pageData.ACCEPT_RATE_TODAY*100).toFixed(0)+'%' - this.chartData3.percentage = (this.pageData.FINISH_RATE_TODAY*100).toFixed(0)+'%' - this.chartData4.percentage = (this.pageData.DELAY_RATE_TODAY*100).toFixed(0)+'%' - this.chartData2.data[0].value = this.pageData.ACCEPT - this.chartData2.data[1].value = this.pageData.FINISHE - this.pageData.ACCEPT - this.loading = false; - this.chartData3.data[0].value = this.pageData.FINISHE - this.chartData3.data[1].value = this.pageData.RECEVICE - this.pageData.FINISHE - this.chartData4.data[0].value = this.pageData.SURPLUS - this.chartData4.data[1].value = this.pageData.RECEVICE - this.pageData.SURPLUS - this.chartConfig0.isLoading = true - this.chartConfig1.isLoading = true - this.chartConfig2.isLoading = true - this.chartConfig3.isLoading = true - this.chartConfig4.isLoading = true - }) - }, - handleData(val){ - if(val){ - let num = Math.abs(val)*100 - return num.toFixed(0); - }else{ - return '0' - } - }, - changeTime(type,m){ - if(m){ - switch(type){ - case '鍛�': - this.startTime = getYearAndMonthAndDays(new Date(this.time.week.getTime() - 24 * 60 * 60 * 1000)) - this.endTime = getYearAndMonthAndDays(new Date(this.time.week.getTime() + 24 * 60 * 60 * 1000 * 5)) - break; - case '鏈�': - const year = new Date(this.time.month).getFullYear(); - const month = new Date(this.time.month).getMonth(); - const day = new Date(year, month + 1, 0).getDate(); // - // 璁剧疆璧峰鏃ユ湡鍜岀粨鏉熸棩鏈� - this.startTime = `${year}-${month + 1}-01` - this.endTime = `${year}-${month + 1}-${day}` // 鏈堟湯 - break; - case '骞�': - const year0 = new Date(this.time.year).getFullYear(); - this.startTime = `${year0}-01-01`; // 骞村垵 - this.endTime = `${year0}-12-31`; // 骞存湯 - break; - } - }else{ - this.startTime = getYearAndMonthAndDays(new Date((new Date).getTime() - 24 * 60 * 60 * 1000)) - this.endTime = getYearAndMonthAndDays(new Date((new Date).getTime() + 24 * 60 * 60 * 1000 * 5)) - this.time.week = new Date() - } - this.init() + this.$axios + .get( + this.$api.report.testProductByDay + + "?startTime=" + + this.startTime + + "&endTime=" + + this.endTime + + "&type=" + + this.type + ) + .then(res => { + if (res.code == 201) return; + this.pageData = this.HaveJson(res.data); + let xData = res.data.DAYS.map(m => { + let arr = m.split("-"); + if (this.type == "骞�") { + return `${arr[1]}鏈坄; + } else { + return `${arr[1]}-${arr[2]}`; + } + }); + this.chartData0.xData = xData; + this.chartData1.xData = xData; + this.chartData0.yData[0].data = this.pageData.RECETENDAYS; + this.chartData1.yData[0].data = this.pageData.RECETENDAYS; + this.chartData1.yData[1].data = this.pageData.FINISHTENDAYS; + this.chartData2.percentage = + (this.pageData.ACCEPT_RATE_TODAY * 100).toFixed(0) + "%"; + this.chartData3.percentage = + (this.pageData.FINISH_RATE_TODAY * 100).toFixed(0) + "%"; + this.chartData4.percentage = + (this.pageData.DELAY_RATE_TODAY * 100).toFixed(0) + "%"; + this.chartData2.data[0].value = this.pageData.ACCEPT; + this.chartData2.data[1].value = + this.pageData.FINISHE - this.pageData.ACCEPT; + this.loading = false; + this.chartData3.data[0].value = this.pageData.FINISHE; + this.chartData3.data[1].value = + this.pageData.RECEVICE - this.pageData.FINISHE; + this.chartData4.data[0].value = this.pageData.SURPLUS; + this.chartData4.data[1].value = + this.pageData.RECEVICE - this.pageData.SURPLUS; + this.chartConfig0.isLoading = true; + this.chartConfig1.isLoading = true; + this.chartConfig2.isLoading = true; + this.chartConfig3.isLoading = true; + this.chartConfig4.isLoading = true; + }); + }, + handleData(val) { + if (val) { + let num = Math.abs(val) * 100; + return num.toFixed(0); + } else { + return "0"; } }, - deactivated(){ - this.timers&&clearInterval(this.timers); + changeTime(type, m) { + if (m) { + switch (type) { + case "鍛�": + this.startTime = getYearAndMonthAndDays( + new Date(this.time.week.getTime() - 24 * 60 * 60 * 1000) + ); + this.endTime = getYearAndMonthAndDays( + new Date(this.time.week.getTime() + 24 * 60 * 60 * 1000 * 5) + ); + break; + case "鏈�": + const year = new Date(this.time.month).getFullYear(); + const month = new Date(this.time.month).getMonth() + 1; + const day = new Date(year, month, 0).getDate(); // + // 璁剧疆璧峰鏃ユ湡鍜岀粨鏉熸棩鏈� + this.startTime = `${year}-${month > 9 ? "0" + month : month}-01`; + this.endTime = `${year}-${month > 9 ? "0" + month : month}-${day}`; // 鏈堟湯 + break; + case "骞�": + const year0 = new Date(this.time.year).getFullYear(); + this.startTime = `${year0}-01-01`; // 骞村垵 + this.endTime = `${year0}-12-31`; // 骞存湯 + break; + } + } else { + this.startTime = getYearAndMonthAndDays( + new Date(new Date().getTime() - 24 * 60 * 60 * 1000) + ); + this.endTime = getYearAndMonthAndDays( + new Date(new Date().getTime() + 24 * 60 * 60 * 1000 * 5) + ); + this.time.week = new Date(); + } + this.init(); } + }, + deactivated() { + this.timers && clearInterval(this.timers); } - </script> +}; +</script> - <style scoped> - .inspection-main{ - height: 100%; - overflow-y: auto; - overflow-x: hidden; - } - .inspection-content{ - padding: 20px 0; - box-sizing: border-box; - } - .inspection-card{ - width: 100%; - background: #FFFFFF; - border-radius: 14px; - box-shadow: 6px 6px 54px 0px rgba(0,0,0,0.05); - padding: 16px; +<style scoped> +.inspection-main { + height: 100%; + overflow-y: auto; + overflow-x: hidden; +} +.inspection-content { + padding: 20px 0; box-sizing: border-box; - } +} +.inspection-card { + width: 100%; + background: #ffffff; + border-radius: 14px; + box-shadow: 6px 6px 54px 0px rgba(0, 0, 0, 0.05); + padding: 16px; + box-sizing: border-box; +} - .inspection-head{ - display: flex; - justify-content: space-between; - align-items: flex-start; - } +.inspection-head { + display: flex; + justify-content: space-between; + align-items: flex-start; +} - .inspection-head h4{ - color: #202224; - font-size: 16px; - font-weight: 400; - margin-bottom: 20px; - opacity: 0.8; - } +.inspection-head h4 { + color: #202224; + font-size: 16px; + font-weight: 400; + margin-bottom: 20px; + opacity: 0.8; +} - .inspection-head-left>span{ - font-family: Nunito Sans-Bold;color: #202224; - font-weight: bold; - font-size: 24px; - display: inline-block; - margin-bottom: 18px; - } +.inspection-head-left > span { + font-family: Nunito Sans-Bold; + color: #202224; + font-weight: bold; + font-size: 24px; + display: inline-block; + margin-bottom: 18px; +} - .inspection-head-left-info{ - display: flex; - align-items: center; - font-size: 16px; - color: #202224; - } +.inspection-head-left-info { + display: flex; + align-items: center; + font-size: 16px; + color: #202224; +} - .num{ - color: #00B69B; - } +.num { + color: #00b69b; +} - .num.active{ - color: #F93C65; - } +.num.active { + color: #f93c65; +} - .chart-box{ - padding: 16px 24px; - box-sizing: border-box; - } +.chart-box { + padding: 16px 24px; + box-sizing: border-box; +} - .chart-box h4{ - color: #202224; - font-family: PingFang SC-Regular; - font-weight: 400; - font-size: 24px; - margin-bottom: 16px; - } +.chart-box h4 { + color: #202224; + font-family: PingFang SC-Regular; + font-weight: 400; + font-size: 24px; + margin-bottom: 16px; +} - .chart{ - width: 100%; - height: 450px; - } - </style> +.chart { + width: 100%; + height: 450px; +} +</style> diff --git a/src/components/view/b4-site-hours-statistics.vue b/src/components/view/b4-site-hours-statistics.vue index b8f9791..fb2d20c 100644 --- a/src/components/view/b4-site-hours-statistics.vue +++ b/src/components/view/b4-site-hours-statistics.vue @@ -5,32 +5,56 @@ <el-date-picker v-model="month" type="month" - placeholder="閫夋嫨鏈�" style="margin-right: 20px;" @change="changeTime"> + placeholder="閫夋嫨鏈�" + style="margin-right: 20px;" + @change="changeTime" + > </el-date-picker> </div> <el-row :gutter="20" class="card" v-loading="loading"> - <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="8" v-for="(item,index) in siteList" :key="index"> - <div class="card-item" :style="`background: url(../../../static/img/site/bg-${item.bg}.png) no-repeat;background-size:100% 100%;margin-bottom:16px`"> - <h3 :style="`color:${item.color};font-weight: 500;font-size: 28px;`" class="card-item-title"> - <img :src="`../../../static/img/site/${item.name}.png`" alt="" style="width: 30px;height: 30px;margin-right: 10px;"> + <el-col + :xs="24" + :sm="12" + :md="12" + :lg="8" + :xl="8" + v-for="(item, index) in siteList" + :key="index" + > + <div + class="card-item" + :style=" + `background: url(../../../static/img/site/bg-${item.bg}.png) no-repeat;background-size:100% 100%;margin-bottom:16px` + " + > + <h3 + :style="`color:${item.color};font-weight: 500;font-size: 28px;`" + class="card-item-title" + > + <img + :src="`../../../static/img/site/${item.name}.png`" + alt="" + style="width: 30px;height: 30px;margin-right: 10px;" + /> <span>{{ item.name }}绔欑偣</span> </h3> <el-table :data="item.tableData" - style="width: 100%;margin-bottom: 14px;" height="410px" size="mini"border v-loading="item.loading"> - <el-table-column - type="index" - label="搴忓彿" - width="60"> + style="width: 100%;margin-bottom: 14px;" + height="410px" + size="mini" + border + v-loading="item.loading" + > + <el-table-column type="index" label="搴忓彿" width="60"> <template #default="scope"> - <!-- 璁$畻搴忓彿 --> - {{ (item.page.current - 1) * item.page.size + scope.$index + 1 }} - </template> + <!-- 璁$畻搴忓彿 --> + {{ + (item.page.current - 1) * item.page.size + scope.$index + 1 + }} + </template> </el-table-column> - <el-table-column - prop="sampleName" - label="鏍峰搧鍚嶇О" - width="90"> + <el-table-column prop="sampleName" label="鏍峰搧鍚嶇О" width="90"> <template #default="scope"> <el-tooltip class="item" @@ -38,13 +62,13 @@ :content="scope.row.sampleName" placement="top" > - <div class="single-line-ellipsis">{{ scope.row.sampleName }}</div> + <div class="single-line-ellipsis"> + {{ scope.row.sampleName }} + </div> </el-tooltip> </template> </el-table-column> - <el-table-column - prop="sampleCode" - label="鏍峰搧缂栧彿"> + <el-table-column prop="sampleCode" label="鏍峰搧缂栧彿"> <template #default="scope"> <el-tooltip class="item" @@ -52,17 +76,15 @@ :content="scope.row.sampleCode" placement="top" > - <div class="single-line-ellipsis">{{ scope.row.sampleCode }}</div> + <div class="single-line-ellipsis"> + {{ scope.row.sampleCode }} + </div> </el-tooltip> </template> </el-table-column> - <el-table-column - prop="num" - label="娆℃暟" width="70"> + <el-table-column prop="num" label="娆℃暟" width="70"> </el-table-column> - <el-table-column - prop="hours" - label="妫�楠屾椂闀�" width="100"> + <el-table-column prop="hours" label="妫�楠屾椂闀�" width="100"> </el-table-column> </el-table> <el-pagination @@ -70,7 +92,11 @@ :page-size="item.page.size" :current-page="item.page.current" layout="prev, pager, next" - :total="item.page.total" small style="text-align: right;" @current-change="m=>changePage(m,item)"> + :total="item.page.total" + small + style="text-align: right;" + @current-change="m => changePage(m, item)" + > </el-pagination> </div> </el-col> @@ -80,251 +106,255 @@ <script> export default { - data(){ + data() { return { - month:'', - siteList:[ + month: "", + siteList: [ { - name:'鐢佃矾璇曢獙', - color:'#FABE63', - bg:'榛勮壊', - tableData:[], - page:{ + name: "鐢佃矾璇曢獙", + color: "#FABE63", + bg: "榛勮壊", + tableData: [], + page: { current: 1, size: 9, - total:0 + total: 0 }, - loading:false, + loading: false }, { - name:'杩滃満', - color:'#6F83FF', - bg:'绱壊', - tableData:[], - page:{ + name: "杩滃満", + color: "#6F83FF", + bg: "绱壊", + tableData: [], + page: { current: 1, size: 9, - total:0 + total: 0 }, - loading:false, + loading: false }, { - name:'杩戝満', - color:'#53B3F9', - bg:'钃濊壊', - tableData:[], - page:{ + name: "杩戝満", + color: "#53B3F9", + bg: "钃濊壊", + tableData: [], + page: { current: 1, size: 9, - total:0 + total: 0 }, - loading:false, + loading: false }, { - name:'鎸姩', - color:'#6F83FF', - bg:'绱壊', - tableData:[], - page:{ + name: "鎸姩", + color: "#6F83FF", + bg: "绱壊", + tableData: [], + page: { current: 1, size: 9, - total:0 + total: 0 }, - loading:false, + loading: false }, { - name:'娣嬮洦', - color:'#53B3F9', - bg:'钃濊壊', - tableData:[], - page:{ + name: "娣嬮洦", + color: "#53B3F9", + bg: "钃濊壊", + tableData: [], + page: { current: 1, size: 9, - total:0 + total: 0 }, - loading:false, + loading: false }, { - name:'楂樹綆娓�', - color:'#80CD62', - bg:'缁胯壊', - tableData:[], - page:{ + name: "楂樹綆娓�", + color: "#80CD62", + bg: "缁胯壊", + tableData: [], + page: { current: 1, size: 9, - total:0 + total: 0 }, - loading:false, + loading: false }, { - name:'鐩愰浘', - color:'#6F83FF', - bg:'绱壊', - tableData:[], - page:{ + name: "鐩愰浘", + color: "#6F83FF", + bg: "绱壊", + tableData: [], + page: { current: 1, size: 9, - total:0 + total: 0 }, - loading:false, + loading: false }, { - name:'椋庤浇', - color:'#53B3F9', - bg:'钃濊壊', - tableData:[], - page:{ + name: "椋庤浇", + color: "#53B3F9", + bg: "钃濊壊", + tableData: [], + page: { current: 1, size: 9, - total:0 + total: 0 }, - loading:false, + loading: false }, { - name:'璺岃惤', - color:'#FABE63', - bg:'榛勮壊', - tableData:[], - page:{ + name: "璺岃惤", + color: "#FABE63", + bg: "榛勮壊", + tableData: [], + page: { current: 1, size: 9, - total:0 + total: 0 }, - loading:false, + loading: false }, { - name:'鑰佸寲', - color:'#80CD62', - bg:'缁胯壊', - tableData:[], - page:{ + name: "鑰佸寲", + color: "#80CD62", + bg: "缁胯壊", + tableData: [], + page: { current: 1, size: 9, - total:0 + total: 0 }, - loading:false, + loading: false }, { - name:'闈欏帇', - color:'#53B3F9', - bg:'钃濊壊', - tableData:[], - page:{ + name: "闈欏帇", + color: "#53B3F9", + bg: "钃濊壊", + tableData: [], + page: { current: 1, size: 9, - total:0 + total: 0 }, - loading:false, + loading: false }, { - name:'鍐插嚮', - color:'#6F83FF', - bg:'绱壊', - tableData:[], - page:{ + name: "鍐插嚮", + color: "#6F83FF", + bg: "绱壊", + tableData: [], + page: { current: 1, size: 9, - total:0 + total: 0 }, - loading:false, + loading: false }, { - name:'鍔熺巼瀹归噺', - color:'#80CD62', - bg:'缁胯壊', - tableData:[], - page:{ + name: "鍔熺巼瀹归噺", + color: "#80CD62", + bg: "缁胯壊", + tableData: [], + page: { current: 1, size: 9, - total:0 + total: 0 }, - loading:false, - }, + loading: false + } ], - startTime:null, - endTime:null, - loading:false, - } + startTime: null, + endTime: null, + loading: false + }; }, - mounted(){ - this.month = new Date() - this.changeTime() + mounted() { + this.month = new Date(); + this.changeTime(); }, - methods:{ - init(){ - this.loading = true - this.$axios.post(this.$api.report.timeByStation, { - startTime:this.startTime, - endTime:this.endTime, - current: 1, - size: 9 - }).then(res => { - this.loading = false - if (res.code === 201) { - return - } - for(let m in res.data){ - this.siteList.forEach(item=>{ - if(item.name==m){ - item.page.total = res.data[m].total - item.tableData = res.data[m].records - } - }) - } - }) + methods: { + init() { + this.loading = true; + this.$axios + .post(this.$api.report.timeByStation, { + startTime: this.startTime, + endTime: this.endTime, + current: 1, + size: 9 + }) + .then(res => { + this.loading = false; + if (res.code === 201) { + return; + } + for (let m in res.data) { + this.siteList.forEach(item => { + if (item.name == m) { + item.page.total = res.data[m].total; + item.tableData = res.data[m].records; + } + }); + } + }); }, - changePage(current,row){ - row.page.current = current - row.loading = true - this.$axios.post(this.$api.report.timeByStation, { - startTime:this.startTime, - endTime:this.endTime, - current: current, - size: row.page.size, - sonLaboratory:row.name - }).then(res => { - row.loading = false - if (res.code === 201) { - return - } - row.tableData = res.data[row.name].records - row.page.total = res.data[row.name].total - }) + changePage(current, row) { + row.page.current = current; + row.loading = true; + this.$axios + .post(this.$api.report.timeByStation, { + startTime: this.startTime, + endTime: this.endTime, + current: current, + size: row.page.size, + sonLaboratory: row.name + }) + .then(res => { + row.loading = false; + if (res.code === 201) { + return; + } + row.tableData = res.data[row.name].records; + row.page.total = res.data[row.name].total; + }); }, - changeTime(){ + changeTime() { const year = new Date(this.month).getFullYear(); - const month = new Date(this.month).getMonth()+1; + const month = new Date(this.month).getMonth() + 1; const day = new Date(year, month + 1, 0).getDate(); // // 璁剧疆璧峰鏃ユ湡鍜岀粨鏉熸棩鏈� - this.startTime = `${year}-${month>9?'0'+month:month}-01` - this.endTime = `${year}-${month>9?'0'+month:month}-${day}` // 鏈堟湯 - this.siteList.forEach(item=>{ - item.page.current = 1 - }) - this.init() + this.startTime = `${year}-${month > 9 ? "0" + month : month}-01`; + this.endTime = `${year}-${month > 9 ? "0" + month : month}-${day}`; // 鏈堟湯 + this.siteList.forEach(item => { + item.page.current = 1; + }); + this.init(); } } -} +}; </script> <style scoped> -.title{ +.title { display: flex; align-items: center; justify-content: space-between; padding: 16px; } -.card{ +.card { height: calc(100vh - 156px); overflow-y: auto; } -.card-item{ +.card-item { height: 540px; - box-shadow: 0px 4px 4px 0px rgba(0,0,0,0.05); + box-shadow: 0px 4px 4px 0px rgba(0, 0, 0, 0.05); padding: 20px 10px 10px 20px; box-sizing: border-box; } -.card-item-title{ +.card-item-title { display: flex; align-items: center; margin-bottom: 20px; -- Gitblit v1.9.3