From e1e998c6cecd43a1006bfeb1bec447cf048cca57 Mon Sep 17 00:00:00 2001 From: licp <lichunping@guanfang.com.cn> Date: 星期二, 17 十二月 2024 17:08:10 +0800 Subject: [PATCH] 统计增加工时统计 --- src/components/view/index-index.vue | 172 ++++++++++++++++++++++++++++++++++++++++++++++++++++----- 1 files changed, 157 insertions(+), 15 deletions(-) diff --git a/src/components/view/index-index.vue b/src/components/view/index-index.vue index f6fc701..f8b4406 100644 --- a/src/components/view/index-index.vue +++ b/src/components/view/index-index.vue @@ -85,9 +85,9 @@ .right-2-body{ width: 100%; margin-top: 20px; - display: flex; + /* display: flex; align-items: start; - justify-content: space-between; + justify-content: space-between; */ } >>>.el-calendar__header { display: none; @@ -353,12 +353,58 @@ </div> <div class="right-2 card"> <div class="right-2-title"> - <span style="color: #333333;font-size: 16px;">鎴戠殑鏃ョ▼</span> - <span style="cursor: pointer;font-size: 12px; -color: #3A7BFA;" @click="dialogVisible=true">娣诲姞鎴戠殑鏃ョ▼</span> + <span style="color: #333333;font-size: 16px;">宸ユ椂缁熻</span> + <div> + <el-select v-model="sonLaboratory" placeholder="绔欑偣" size="mini" style="width: 100px;" @change="initEchart"> + <el-option + v-for="item in sonLaboratoryList" + :key="item.value" + :label="item.label" + :value="item.value"> + </el-option> + </el-select> + <el-radio-group v-model="type" size="mini"> + <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-MM-dd" + placeholder="閫夋嫨鍛�" size="mini" v-if="type=='鍛�'" @change="m=>changeTime(type,m)" style="width: 130px;"> + </el-date-picker> + <el-date-picker + v-model="time.month" + type="month" + placeholder="閫夋嫨鏈�" format="yyyy-MM-dd" size="mini" v-if="type=='鏈�'" @change="m=>changeTime(type,m)" style="width: 130px;"> + </el-date-picker> + <el-date-picker + v-model="time.year" + type="year" + placeholder="閫夋嫨骞�" format="yyyy-MM-dd" size="mini" v-if="type=='骞�'" @change="m=>changeTime(type,m)" style="width: 130px;"> + </el-date-picker> + </div> + <!-- <span style="cursor: pointer;font-size: 12px; +color: #3A7BFA;" @click="dialogVisible=true">娣诲姞鎴戠殑鏃ョ▼</span> --> </div> <div class="right-2-body"> - <div class="calendar" style="width: 49%;"> + <el-row :gutter="10" style="width: 100%;height: 80px;"> + <el-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12"> + <div style="height: 100%;background: url(../../../static/img/bg1.png) no-repeat;background-size: 100% 100%;padding: 12px 0;box-sizing: border-box;"> + <p style="text-align: center;font-size: 14px;color: #606266;line-height: 20px;margin-bottom: 4px;">鎬诲伐鏃�(灏忔椂)</p> + <p style="text-align: center;font-family: DIN Alternate, DIN Alternate;font-weight: 700;font-size: 30px;color: #3D3D3D;line-height: 35px;">{{chartData0.total}}</p> + </div> + </el-col> + <el-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12"> + <div style="height: 100%;background: url(../../../static/img/bg2.png) no-repeat;background-size: 100% 100%;padding: 12px 0;box-sizing: border-box;"> + <p style="text-align: center;font-size: 14px;color: #606266;line-height: 20px;margin-bottom: 4px;">妫�楠屽憳(涓�)</p> + <p style="text-align: center;font-family: DIN Alternate, DIN Alternate;font-weight: 700;font-size: 30px;color: #3D3D3D;line-height: 35px;">{{chartData0.personNum}}</p> + </div> + </el-col> + </el-row> + <echart-module :id="'index-1'" :config="chartConfig0" :datas="chartData0" style="height: 250px;width: 100%;"></echart-module> + <!-- <div class="calendar" style="width: 49%;"> <div class="control"> <el-button class="prevm" @click="prevMonth(calendarValue)" icon="el-icon-arrow-left"></el-button> <span>{{ calendarValue.getFullYear()+'骞�'+(calendarValue.getMonth() + 1)+'鏈�' }}</span> @@ -371,12 +417,10 @@ <span> {{ data.day.split('-').slice(2)+'' }} </span> - <!-- <el-badge v-if="data.isSelected" is-dot class="item"> - </el-badge> --> </template> </el-calendar> - </div> - <div class="right-2-list" style="width: 49%;height: 286px;" v-loading="scheduleLoading"> + </div> --> + <!-- <div class="right-2-list" style="width: 49%;height: 286px;" v-loading="scheduleLoading"> <div class="list2-item" v-for="(m,i) in listScheduleByMe" :key="i"> <span>{{ m.scheduleTimes }}</span> <el-tooltip style="margin-left: 10px;" effect="dark" :content="m.text" placement="top"> @@ -384,7 +428,7 @@ </el-tooltip> </div> <span style="color:rgb(144, 147, 153);font-size: 14px;text-align: center;margin: 120px 0;display: inline-block;width: 100%;" v-if="listScheduleByMe.length==0">鏆傛棤鏁版嵁</span> - </div> + </div> --> </div> </div> <div class="right-3 card" style="overflow: hidden;"> @@ -452,9 +496,12 @@ getYearAndMonthAndDays } from '../../util/date' import ScrollPagination from '../tool/scroll-paging.vue' + import EchartModule from '../tool/echart.vue' +import { name } from 'file-loader'; export default { components: { - ScrollPagination + ScrollPagination, + EchartModule }, data() { return { @@ -483,6 +530,26 @@ timer:null, keyMap:{}, getNumberFourTypes: {}, + type:'鍛�', + time:{ + week:'', + month:'', + year:'', + }, + startTime:'', + endTime:'', + sonLaboratory:null, + sonLaboratoryList:[], + chartData0:{ + total:0, + personNum:0, + data:[] + }, + chartConfig0:{ + height: '', + isLoading:false, + type:'pie0' + } } }, watch:{ @@ -494,6 +561,22 @@ this.currentPage = 1; this.list = []; this.getList(); + }, + 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) + break; + case '骞�': + this.time.year = new Date() + this.changeTime(val,this.time.year) + break; + } } }, mounted() { @@ -508,7 +591,8 @@ this.keyMap = {} this.list = []; this.getList(); - this.getScheduleByMe() + this.getLaboratoryDicts() + // this.getScheduleByMe() this.timer&&clearInterval(this.timer) this.timer = setInterval(() => { this.init(); @@ -516,7 +600,7 @@ this.keyMap = {} this.list = []; this.getList(); - this.getScheduleByMe() + // this.getScheduleByMe() },1000*60*10) this.getNumberFourTypesFun() }, @@ -687,6 +771,28 @@ }) }) }, + async initEchart(){ + this.chartConfig0.isLoading = false + let res0 = await this.$axios.post(this.$api.report.manHourByStation+'?startTime='+this.startTime+'&endTime='+this.endTime+'&sonLaboratory='+this.sonLaboratory) + if (res0.code == 201) return + this.chartData0.total = res0.message + let res1 = await this.$axios.post(this.$api.report.manHourByPerson+'?startTime='+this.startTime+'&endTime='+this.endTime+'&sonLaboratory='+this.sonLaboratory) + if (res1.code == 201) return + this.chartData0.personNum = 0 + this.chartData0.data = [] + if(res1.data){ + for(let m in res1.data){ + this.chartData0.personNum ++ + let obj = { + name:m, + value:res1.data[m], + penl:this.chartData0.total>0?((res1.data[m]/this.chartData0.total)*100).toFixed(2):0 + } + this.chartData0.data.push(obj) + } + } + this.chartConfig0.isLoading = true + }, getWeekdaysForNextWeek() { let weekdays = []; for (let i = 0; i < 7; i++) { @@ -771,7 +877,43 @@ text:row.text } },1); - } + }, + 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(); + + // 璁剧疆璧峰鏃ユ湡鍜岀粨鏉熸棩鏈� + this.startTime = new Date(year, month, 1).toISOString().slice(0, 10); // 鏈堝垵 + this.endTime = new Date(year, month + 1, 0).toISOString().slice(0, 10); // 鏈堟湯 + 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.initEchart() + }, + getLaboratoryDicts() { + this.$axios.post(this.$api.enums.selectEnumByCategory, { + category: "瀛愬疄楠屽" + }).then(res => { + this.sonLaboratoryList = res.data + this.sonLaboratory = '杩滃満' + this.changeTime(this.type) + }) + }, }, deactivated(){ this.timer&&clearInterval(this.timer) -- Gitblit v1.9.3