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-daily-business-statistics.vue | 687 +++++++++++++++++++++++++++++++++++---------------------- 1 files changed, 423 insertions(+), 264 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; } -- Gitblit v1.9.3