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/tool/echart.vue | 2
src/components/view/b4-daily-business-statistics.vue | 7 +
src/util/echarts.js | 69 +++++++++++++
src/components/view/b4-inspection-item-statistics.vue | 7 +
src/assets/api/controller.js | 2
src/components/view/index-index.vue | 172 +++++++++++++++++++++++++++++++---
6 files changed, 241 insertions(+), 18 deletions(-)
diff --git a/src/assets/api/controller.js b/src/assets/api/controller.js
index 2f5953d..57fe9f9 100644
--- a/src/assets/api/controller.js
+++ b/src/assets/api/controller.js
@@ -318,6 +318,8 @@
addSchedule: "/report/addSchedule", //棣栭〉-->娣诲姞鏃ョ▼
ScheduleByMe: "/report/ScheduleByMe", //棣栭〉-->鎴戠殑鏃ョ▼
testProductByDay: "/report/testProductByDay", //棣栨娴嬮」鐩粺璁�
+ manHourByStation: "/report/manHourByStation", //棣栭〉宸ユ椂缁熻
+ manHourByPerson: "/report/manHourByPerson", //棣栭〉宸ユ椂缁熻
}
const certification = {
getCertificationDetail: "/certification/getCertificationDetail", //鏌ヨ璧勮川鏄庣粏鍒楄〃
diff --git a/src/components/tool/echart.vue b/src/components/tool/echart.vue
index d0f7674..cf5b2bd 100644
--- a/src/components/tool/echart.vue
+++ b/src/components/tool/echart.vue
@@ -82,6 +82,8 @@
case 'gauge':
iuCharts.drawGauge(this.chart,this.datas)
break;
+ case 'pie0':
+ iuCharts.drawPie0(this.chart,this.datas)
default:
break;
}
diff --git a/src/components/view/b4-daily-business-statistics.vue b/src/components/view/b4-daily-business-statistics.vue
index 797faa6..04d530b 100644
--- a/src/components/view/b4-daily-business-statistics.vue
+++ b/src/components/view/b4-daily-business-statistics.vue
@@ -214,9 +214,14 @@
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('-')
- return `${arr[1]}-${arr[2]}`
+ if(this.type=='骞�'){
+ return `${arr[1]}鏈坄
+ }else{
+ return `${arr[1]}-${arr[2]}`
+ }
})
this.chartData0.xData = xData
this.chartData1.xData = xData
diff --git a/src/components/view/b4-inspection-item-statistics.vue b/src/components/view/b4-inspection-item-statistics.vue
index f7e513f..4eacf93 100644
--- a/src/components/view/b4-inspection-item-statistics.vue
+++ b/src/components/view/b4-inspection-item-statistics.vue
@@ -257,8 +257,11 @@
if (res.code == 201) return
this.pageData = this.HaveJson(res.data)
let xData = res.data.DAYS.map(m=>{
- let arr = m.split('-')
- return `${arr[1]}-${arr[2]}`
+ if(this.type=='骞�'){
+ return `${arr[1]}鏈坄
+ }else{
+ return `${arr[1]}-${arr[2]}`
+ }
})
this.chartData0.xData = xData
this.chartData1.xData = xData
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)
diff --git a/src/util/echarts.js b/src/util/echarts.js
index 156ead4..8ccd62b 100644
--- a/src/util/echarts.js
+++ b/src/util/echarts.js
@@ -334,6 +334,75 @@
]
};
chart.setOption(option,true);
+ },
+ drawPie0:function(chart,params){
+ const colorList = ['#F09595', '#A4EEDA','#F6C18B', '#86C1F4','#91A0FC','#59CB74', '#FBD444', '#7F6AAD', '#585247']
+ let option = {
+ title: {
+ text: '鎬诲伐鏃�',
+ textStyle: {
+ fontSize: 18,
+ color: '#000',
+ lineHeight: 20
+ },
+ textAlign: 'center',
+ left: '18.8%',
+ top: '45%'
+ },
+ tooltip: {
+ trigger: 'item',
+ },
+ legend: {
+ type: 'scroll',
+ orient: 'vertical',
+ right: '10%',
+ top: 'center',
+ itemGap: 30,
+ selectedMode: false,
+ icon: 'rect',
+ data: params.data.map((d) => d.name),
+ textStyle: {
+ color: '#3D3D3D',
+ fontSize:'12px',
+ rich: {
+ name: {
+ width: 60,
+ },
+ hours: {
+ width: 60,
+ },
+ penl: {
+ width: 60,
+ }
+ }
+ },
+ formatter(name) {
+ const item = params.data.find((d) => d.name === name);
+ return `{name|${item.name}}{hours|${item.value}灏忔椂}{penl|${item.penl}%}`
+ }
+ },
+ color: colorList,
+ series: [
+ {
+ name: '宸ユ椂',
+ type: 'pie',
+ radius: [60, 90],
+ center: ['20%', '50%'],
+ label: {
+ show: false
+ },
+ labelLine: {
+ show: false
+ },
+ itemStyle: {
+ borderWidth: 1,
+ borderColor: '#fff'
+ },
+ data: params.data,
+ }
+ ]
+ }
+ chart.setOption(option,true);
}
}
--
Gitblit v1.9.3