fix:光子统计导出页面
This commit is contained in:
parent
84a6f8c41b
commit
304add9061
|
|
@ -3674,7 +3674,7 @@ const routes = [
|
|||
meta: {
|
||||
title: "统计导出",
|
||||
icon: "el-icon-DataAnalysis",
|
||||
perms: ["statistic_total"],
|
||||
perms: ["total_export"],
|
||||
},
|
||||
component: "statistics/all.vue",
|
||||
},
|
||||
|
|
|
|||
|
|
@ -7,75 +7,134 @@
|
|||
value-format="YYYY-MM" style="width:200px">
|
||||
</el-date-picker>
|
||||
<el-button type="primary" icon="el-icon-search" @click="handleQuery"></el-button>
|
||||
<el-button type="primary" @click="downloadPDF">导出</el-button>
|
||||
</div>
|
||||
</el-header>
|
||||
<el-main id="elMain" class="nopadding" style="width: 1024px;">
|
||||
<div id="bachart1" style="width:100%;height:300px;"></div>
|
||||
<el-table :data="dataList" id="exportDiv1">
|
||||
<el-table-column type="index" width="50" />
|
||||
<el-table-column label="物料名" prop="物料名">
|
||||
</el-table-column>
|
||||
<el-table-column label="月份" prop="月" v-if="queryType == '年'">
|
||||
</el-table-column>
|
||||
<el-table-column label="周" prop="周" v-else>
|
||||
</el-table-column>
|
||||
<el-table-column label="规格" prop="规格">
|
||||
</el-table-column>
|
||||
<el-table-column label="型号" prop="型号">
|
||||
</el-table-column>
|
||||
<el-table-column label="桶数" prop="合格数">
|
||||
</el-table-column>
|
||||
<el-table-column label="总重量" prop="总重量">
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<el-main id="elMain" class="nopadding">
|
||||
<div id="content">
|
||||
<!-- 混料统计 -->
|
||||
<hunliao
|
||||
class="contentItem"
|
||||
:firstWeekNum="firstWeekNum"
|
||||
:endWeekNum="endWeekNum"
|
||||
:start_date="start_date"
|
||||
:end_date="end_date"
|
||||
:queryDate="queryDate"
|
||||
:queryType="queryType"
|
||||
:xAxisData="xAxisData"
|
||||
></hunliao>
|
||||
<!-- 合格数统计 -->
|
||||
<pass_num
|
||||
class="contentItem"
|
||||
:firstWeekNum="firstWeekNum"
|
||||
:endWeekNum="endWeekNum"
|
||||
:start_date="start_date"
|
||||
:end_date="end_date"
|
||||
:queryDate="queryDate"
|
||||
:queryType="queryType"
|
||||
:xAxisData="xAxisData"
|
||||
></pass_num>
|
||||
<!-- 任务进度 -->
|
||||
<task_rate
|
||||
class="contentItem"
|
||||
:start_date="start_date"
|
||||
:end_date="end_date"
|
||||
:queryDate="queryDate"
|
||||
:queryType="queryType"
|
||||
></task_rate>
|
||||
<!-- 工序合格数 -->
|
||||
<ppass_num
|
||||
class="contentItem"
|
||||
:start_date="start_date"
|
||||
:end_date="end_date"
|
||||
:queryDate="queryDate"
|
||||
:queryType="queryType"
|
||||
></ppass_num>
|
||||
<product_check
|
||||
class="contentItem"
|
||||
:start_date="start_date"
|
||||
:end_date="end_date"
|
||||
:queryDate="queryDate"
|
||||
:queryType="queryType"
|
||||
></product_check>
|
||||
<product_check2
|
||||
class="contentItem"
|
||||
:start_date="start_date"
|
||||
:end_date="end_date"
|
||||
:queryDate="queryDate"
|
||||
:queryType="queryType"
|
||||
></product_check2>
|
||||
<material_statistics
|
||||
class="contentItem"
|
||||
:start_date="start_date"
|
||||
:end_date="end_date"
|
||||
:queryDate="queryDate"
|
||||
:queryType="queryType"
|
||||
></material_statistics>
|
||||
<user_statistics
|
||||
class="contentItem"
|
||||
:start_date="start_date"
|
||||
:end_date="end_date"
|
||||
:queryDate="queryDate"
|
||||
:queryType="queryType"
|
||||
></user_statistics>
|
||||
<inm_statistics
|
||||
class="contentItem"
|
||||
:start_date="start_date"
|
||||
:end_date="end_date"
|
||||
:queryDate="queryDate"
|
||||
:queryType="queryType"
|
||||
></inm_statistics>
|
||||
<stock_statistics
|
||||
class="contentItem"
|
||||
:start_date="start_date"
|
||||
:end_date="end_date"
|
||||
:queryDate="queryDate"
|
||||
:queryType="queryType"
|
||||
></stock_statistics>
|
||||
</div>
|
||||
</el-main>
|
||||
</el-container>
|
||||
</template>
|
||||
<script>
|
||||
import * as echarts from "echarts";
|
||||
import T from '@/components/scEcharts/echarts-theme-T.js';
|
||||
echarts.registerTheme('T', T);
|
||||
function deepCopy(obj) {
|
||||
return JSON.parse(JSON.stringify(obj));
|
||||
}
|
||||
import getPdf from "@/utils/htmlToPdf";
|
||||
import PdfLoader from '@/utils/html2pdf';
|
||||
import hunliao from "./all_sc_hl.vue";//生产-混料统计
|
||||
import pass_num from "./all_sc_hg.vue";//生产-合格数统计
|
||||
import task_rate from "./all_sc_rw.vue";//生产-任务进度
|
||||
import ppass_num from "./all_sc_gx.vue";//生产-工序合格数
|
||||
import product_check from "./all_jy_sc.vue";//检验-生产检验统计
|
||||
import product_check2 from "./all_jy_cjg.vue";//检验-生产检验统计(粗加工)
|
||||
import material_statistics from "./all_cg.vue";//采购统计
|
||||
import user_statistics from "./all_jx.vue";//绩效统计
|
||||
import inm_statistics from "./all_xs.vue";//销售统计
|
||||
import stock_statistics from "./all_kc.vue";//库存统计
|
||||
export default {
|
||||
name: "bx",
|
||||
|
||||
name: "all",
|
||||
components: {
|
||||
hunliao,
|
||||
pass_num,
|
||||
task_rate,
|
||||
ppass_num,
|
||||
product_check,
|
||||
product_check2,
|
||||
material_statistics,
|
||||
user_statistics,
|
||||
inm_statistics,
|
||||
stock_statistics},
|
||||
data() {
|
||||
return {
|
||||
queryType:'月',
|
||||
queryDate: '',
|
||||
mgroups:[],
|
||||
dataList: [],
|
||||
start_date: '',
|
||||
end_date: '',
|
||||
xAxisData:[],
|
||||
xAxisOrigin:[],
|
||||
firstWeekNum: 1,
|
||||
endWeekNum: 4,
|
||||
basicOption: {
|
||||
backgroundColor: 'transparent',
|
||||
title: {
|
||||
text: '',
|
||||
},
|
||||
grid: {
|
||||
top: '80px'
|
||||
},
|
||||
tooltip: {
|
||||
trigger: 'axis'
|
||||
},
|
||||
xAxis: {
|
||||
type: 'category',
|
||||
data: []
|
||||
},
|
||||
yAxis: {
|
||||
type: 'value'
|
||||
},
|
||||
lenged: [],
|
||||
series: [{
|
||||
data: [0, 0, 0, 0, 0, 0, 0],
|
||||
stack: 'Ad',
|
||||
type: 'bar',
|
||||
barWidth: '15px',
|
||||
}]
|
||||
},
|
||||
currentfirstWeekNum: 1,
|
||||
currentendWeekNum: 4,
|
||||
pdfDownLoader:null
|
||||
};
|
||||
},
|
||||
mounted() {
|
||||
|
|
@ -86,8 +145,8 @@ export default {
|
|||
let days = new Date(year, month, 0).getDate();
|
||||
that.currentYear = year;
|
||||
that.currentMonth = month;
|
||||
that.firstWeekNum = that.getWeekOfYear(year,month,1);
|
||||
that.endWeekNum = that.getWeekOfYear(year,month,days);
|
||||
that.firstWeekNum = that.currentfirstWeekNum = that.getWeekOfYear(year,month,1);
|
||||
that.endWeekNum = that.currentendWeekNum = that.getWeekOfYear(year,month,days);
|
||||
month = month < 10 ? '0' + month : month;
|
||||
that.start_date = year + '-' + month + '-01';
|
||||
that.end_date = year + '-' + month + '-' + days;
|
||||
|
|
@ -97,7 +156,8 @@ export default {
|
|||
that.xAxisOrigin.push('第' + i + '周');
|
||||
}
|
||||
that.xAxisData = that.xAxisOrigin;
|
||||
that.getDataHL();//混料数据
|
||||
const content = document.getElementById('content')
|
||||
this.pdfDownLoader = new PdfLoader(content, '光子科技生产管理系统月度报告') // exportTables -->防止被截断的class名
|
||||
},
|
||||
methods: {
|
||||
getWeekOfYear(a,b,c) {
|
||||
|
|
@ -108,94 +168,74 @@ export default {
|
|||
// d + 当前年的第一天的周差距的和在除以7就是本年第几周
|
||||
return Math.ceil((d + (date2.getDay() + 1 - 1)) / 7);
|
||||
},
|
||||
setChart(name, option = null) {
|
||||
// 根据name 渲染数据, option需填写,否则option为模拟数据
|
||||
var myChart = echarts.getInstanceByDom(document.getElementById(name));
|
||||
if (myChart == undefined) {
|
||||
myChart = echarts.init(document.getElementById(name), 'T');
|
||||
}
|
||||
if (option == null) {
|
||||
option = Object.assign({}, this.basicOption)
|
||||
}
|
||||
setTimeout(() => {
|
||||
try {
|
||||
myChart.setOption(option);
|
||||
} catch (error) { }
|
||||
}, 500)
|
||||
downloadPDF() {
|
||||
this.$PRINT('#content');
|
||||
this.pdfDownLoader.outPutPdfFn('光子科技生产管理系统月度报告')
|
||||
},
|
||||
handleQuery() {
|
||||
if (that.queryDate !== '' && that.queryDate !== null) {
|
||||
let arr = that.queryDate.split('-');
|
||||
let that = this;
|
||||
if (that.queryDate !== "" && that.queryDate !== null) {
|
||||
let arr = that.queryDate.split("-");
|
||||
let year = arr[0];
|
||||
let month = arr[1];
|
||||
let days = new Date(year, month, 0).getDate();
|
||||
that.start_date = that.queryDate + '-01';
|
||||
that.end_date = that.queryDate + '-' + days;
|
||||
that.start_date = that.queryDate + "-01";
|
||||
that.end_date =that.queryDate +"-" +days;
|
||||
that.firstWeekNum = that.getWeekOfYear(year,month,1);
|
||||
that.endWeekNum = that.getWeekOfYear(year,month,days);
|
||||
let duration = that.endWeekNum - that.firstWeekNum + 1;
|
||||
let xAxisData = [];
|
||||
for (let i = 1; i <= duration; i++) {
|
||||
xAxisData.push('第' + i + '周');
|
||||
xAxisData.push("第" + i + "周");
|
||||
}
|
||||
that.xAxisData = xAxisData;
|
||||
} else {
|
||||
that.start_date = that.currentYear + '-' + that.currentMonth + '-01';
|
||||
that.end_date = that.currentYear + '-' + that.currentMonth + '-' + new Date(that.currentYear, that.currentMonth, 0).getDate();
|
||||
that.start_date =that.currentYear + "-" + that.currentMonth + "-01";
|
||||
that.end_date =that.currentYear +"-" +that.currentMonth +"-" +new Date(that.currentYear,that.currentMonth,0).getDate();
|
||||
that.firstWeekNum = that.getWeekOfYear(that.currentYear,that.currentMonth,1);
|
||||
that.xAxisData = that.xAxisOrigin;
|
||||
}
|
||||
},
|
||||
getMgroups(code){
|
||||
let that = this;
|
||||
that.$API.mtm.mgroup.list.req({page:0,code}).then((res) => {
|
||||
that.mgroups = res;
|
||||
that.componentsShow = true;
|
||||
});
|
||||
},
|
||||
getDataHL() {
|
||||
let that = this;
|
||||
let obj = {
|
||||
query: { start_date: that.start_date, end_date: that.end_date, mgroup_name: "混料", is_count_utask: -1 },
|
||||
};
|
||||
let option = deepCopy(that.basicOption);
|
||||
option.xAxis.data = that.xAxisData;
|
||||
option.title.text = '混料统计';
|
||||
that.$API.bi.dataset.exec.req('lineWeek', obj).then((res) => {
|
||||
let dataList = res.data2.ds0 ? res.data2.ds0 : [];
|
||||
that.dataList = dataList;
|
||||
if (dataList.length > 0) {
|
||||
option.series = [];
|
||||
let seriesData = [], nameList = [];
|
||||
dataList.forEach(ite => {
|
||||
if (nameList.indexOf(ite.物料名) > -1) { } else {
|
||||
nameList.push(ite.物料名);
|
||||
seriesData.push([0,0,0,0,0,0,0,0,0,0,0,0])
|
||||
}
|
||||
})
|
||||
dataList.forEach(item => {
|
||||
let indexX = 0, indexY = 0;
|
||||
indexX = nameList.indexOf(item.物料名);
|
||||
indexY = item.周 - that.firstWeekNum;
|
||||
seriesData[indexX][indexY] += item.合格数;
|
||||
});
|
||||
for (let n = 0; n < seriesData.length; n++) {
|
||||
let obj = {};
|
||||
obj.name = nameList[n];
|
||||
obj.stack = 'Ad';
|
||||
obj.type = 'bar';
|
||||
obj.barWidth = '15px';
|
||||
obj.data = seriesData[n];
|
||||
option.series.push(obj)
|
||||
}
|
||||
that.setChart("bachart1", option);
|
||||
} else {
|
||||
that.setChart("bachart1", option);
|
||||
}
|
||||
});
|
||||
// if (that.queryType == "月") {
|
||||
// if (that.queryDate !== "" && that.queryDate !== null) {
|
||||
// let arr = that.queryDate.split("-");
|
||||
// let year = arr[0];
|
||||
// let month = arr[1];
|
||||
// let days = new Date(year, month, 0).getDate();
|
||||
// that.start_date = that.queryDate + "-01";
|
||||
// that.end_date =that.queryDate +"-" +days;
|
||||
// that.firstWeekNum = that.getWeekOfYear(year,month,1);
|
||||
// that.endWeekNum = that.getWeekOfYear(year,month,days);
|
||||
// let duration = that.endWeekNum - that.firstWeekNum + 1;
|
||||
// let xAxisData = [];
|
||||
// for (let i = 1; i <= duration; i++) {
|
||||
// xAxisData.push("第" + i + "周");
|
||||
// }
|
||||
// that.xAxisData = xAxisData;
|
||||
// } else {
|
||||
// that.start_date =that.currentYear + "-" + that.currentMonth + "-01";
|
||||
// that.end_date =that.currentYear +"-" +that.currentMonth +"-" +new Date(that.currentYear,that.currentMonth,0).getDate();
|
||||
// that.firstWeekNum = that.getWeekOfYear(that.currentYear,that.currentMonth,1);;
|
||||
// that.xAxisData = that.xAxisOrigin;
|
||||
// }
|
||||
// } else {
|
||||
// if (that.queryDate !== "" && that.queryDate !== null) {
|
||||
// that.start_date = that.queryDate + "-01-01";
|
||||
// that.end_date = that.queryDate + "-12-31";
|
||||
// } else {
|
||||
// that.start_date = that.currentYear + "-01-01";
|
||||
// that.end_date = that.currentYear + "-12-31";
|
||||
// }
|
||||
// that.xAxisData = that.monthList;
|
||||
// }
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
<style scoped>
|
||||
#content{
|
||||
width: 1190px;
|
||||
}
|
||||
.contentItem{
|
||||
margin-top: 20px;
|
||||
}
|
||||
</style>
|
||||
|
|
|
|||
|
|
@ -0,0 +1,100 @@
|
|||
<template>
|
||||
<div>
|
||||
<p style="font-size: 18px;font-weight: 600;text-align: center;margin: 10px;">{{queryDate}}采购统计</p>
|
||||
<scTable :data="tableData2" hideDo hidePagination class="exportTables">
|
||||
<el-table-column type="index" width="50" />
|
||||
<el-table-column
|
||||
label="年份"
|
||||
prop="年"
|
||||
width="80"
|
||||
/>
|
||||
<el-table-column
|
||||
v-if="queryType == '月'"
|
||||
width="50"
|
||||
label="周"
|
||||
prop="周"
|
||||
/>
|
||||
<el-table-column
|
||||
v-else
|
||||
width="50"
|
||||
label="月份"
|
||||
prop="月"
|
||||
/>
|
||||
<el-table-column label="名称" prop="物料名">
|
||||
</el-table-column>
|
||||
<el-table-column label="规格" prop="规格">
|
||||
</el-table-column>
|
||||
<el-table-column label="型号" prop="型号">
|
||||
</el-table-column>
|
||||
<el-table-column label="数量" prop="数量">
|
||||
</el-table-column>
|
||||
</scTable>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: "all_cg",
|
||||
props: {
|
||||
queryType:{
|
||||
type: String,
|
||||
default: "月"
|
||||
},
|
||||
queryDate:{
|
||||
type: String,
|
||||
default: ""
|
||||
},
|
||||
start_date:{
|
||||
type: String,
|
||||
default: ""
|
||||
},
|
||||
end_date:{
|
||||
type: String,
|
||||
default: ""
|
||||
},
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
currentYear: "",
|
||||
currentMonth: "",
|
||||
typeOptions: ["月", "年"],
|
||||
tableData2: [],
|
||||
materialItem:{},
|
||||
};
|
||||
},
|
||||
mounted() {
|
||||
this.$nextTick(() => {
|
||||
this.getTable();
|
||||
})
|
||||
},
|
||||
methods: {
|
||||
getTable() {
|
||||
let that = this;
|
||||
let obj = {
|
||||
query: {
|
||||
start_date: that.start_date,
|
||||
end_date: that.end_date,
|
||||
mio_type: "pur_in",
|
||||
},
|
||||
};
|
||||
let exec = that.queryType == "月" ? "saleOutWeek" : "saleOutMonth";
|
||||
that.$API.bi.dataset.exec.req(exec, obj).then((res) => {
|
||||
that.tableData2 = [];
|
||||
if (res.data2.ds0) {
|
||||
let data = res.data2.ds0;
|
||||
that.tableData2 = data;
|
||||
}
|
||||
});
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.tables {
|
||||
position: absolute;
|
||||
top: 4px;
|
||||
right: 6px;
|
||||
z-index: 10;
|
||||
}
|
||||
</style>
|
||||
|
|
@ -0,0 +1,289 @@
|
|||
<template>
|
||||
<div>
|
||||
<scEcharts height="600px" :option="option6" style="margin-top: 10px;"></scEcharts>
|
||||
<el-table :data="tableData6" class="exportTables">
|
||||
<el-table-column type="index" width="50" />
|
||||
<el-table-column label="日期" prop="date">
|
||||
<template #default="scope">
|
||||
{{ scope.row.年 }}-{{ scope.row.月 }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作人" prop="操作人">
|
||||
</el-table-column>
|
||||
<el-table-column label="工段" prop="工段">
|
||||
</el-table-column>
|
||||
<el-table-column label="车间" prop="dept_name">
|
||||
</el-table-column>
|
||||
<el-table-column label="生产数" prop="生产数">
|
||||
</el-table-column>
|
||||
<el-table-column label="合格数" prop="合格数">
|
||||
</el-table-column>
|
||||
<el-table-column label="不合格数" prop="不合格数">
|
||||
</el-table-column>
|
||||
<el-table-column label="合格率" prop="合格率">
|
||||
<template #default="scope">
|
||||
{{ Math.round(scope.row.合格率) }}%
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<scEcharts height="500px" :option="option7" style="margin-top: 10px;"></scEcharts>
|
||||
<el-table :data="tableData7" class="exportTables">
|
||||
<el-table-column type="index" width="50" />
|
||||
<el-table-column label="日期" prop="date">
|
||||
<template #default="scope">
|
||||
{{ scope.row.年 }}-{{ scope.row.月 }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作人" prop="操作人">
|
||||
</el-table-column>
|
||||
<el-table-column label="工段" prop="工段">
|
||||
</el-table-column>
|
||||
<el-table-column label="车间" prop="dept_name">
|
||||
</el-table-column>
|
||||
<el-table-column label="生产数" prop="生产数">
|
||||
</el-table-column>
|
||||
<el-table-column label="合格数" prop="合格数">
|
||||
</el-table-column>
|
||||
<el-table-column label="不合格数" prop="不合格数">
|
||||
</el-table-column>
|
||||
<el-table-column label="合格率" prop="合格率">
|
||||
<template #default="scope">
|
||||
{{ Math.round(scope.row.合格率) }}%
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<scEcharts height="300px" :option="option10" style="margin-top: 10px;"></scEcharts>
|
||||
<el-table :data="tableData10" class="exportTables">
|
||||
<el-table-column type="index" width="50" />
|
||||
<el-table-column label="日期" prop="date">
|
||||
<template #default="scope">
|
||||
{{ scope.row.年 }}-{{ scope.row.月 }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作人" prop="操作人">
|
||||
</el-table-column>
|
||||
<el-table-column label="工段" prop="工段">
|
||||
</el-table-column>
|
||||
<el-table-column label="车间" prop="dept_name">
|
||||
</el-table-column>
|
||||
<el-table-column label="生产数" prop="生产数">
|
||||
</el-table-column>
|
||||
<el-table-column label="合格数" prop="合格数">
|
||||
</el-table-column>
|
||||
<el-table-column label="不合格数" prop="不合格数">
|
||||
</el-table-column>
|
||||
<el-table-column label="合格率" prop="合格率">
|
||||
<template #default="scope">
|
||||
{{ Math.round(scope.row.合格率) }}%
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import scEcharts from "@/components/scEcharts";
|
||||
export default {
|
||||
name: "all_jx",
|
||||
components: {
|
||||
scEcharts,
|
||||
},
|
||||
props: {
|
||||
queryType:{
|
||||
type: String,
|
||||
default: "月"
|
||||
},
|
||||
queryDate:{
|
||||
type: String,
|
||||
default: ""
|
||||
},
|
||||
start_date:{
|
||||
type: String,
|
||||
default: ""
|
||||
},
|
||||
end_date:{
|
||||
type: String,
|
||||
default: ""
|
||||
},
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
queryBelongDept: "",
|
||||
currentYear: "",
|
||||
currentMonth: "",
|
||||
deptData: [],
|
||||
tableData: [],
|
||||
option6:{
|
||||
title: {
|
||||
text: "6车间人员绩效统计",
|
||||
left: "center",
|
||||
},
|
||||
grid: {
|
||||
top: "80px",
|
||||
},
|
||||
tooltip: {
|
||||
trigger: "axis",
|
||||
},
|
||||
xAxis: {
|
||||
type: "value",
|
||||
position: "top",
|
||||
axisLine: {
|
||||
show: true,
|
||||
},
|
||||
},
|
||||
yAxis: {
|
||||
type: "category",
|
||||
data: [],
|
||||
},
|
||||
series: {
|
||||
data: [],
|
||||
type: "bar",
|
||||
barWidth: "15px",
|
||||
},
|
||||
},
|
||||
option7:{
|
||||
title: {
|
||||
text: "7车间人员绩效统计",
|
||||
left: "center",
|
||||
},
|
||||
grid: {
|
||||
top: "80px",
|
||||
},
|
||||
tooltip: {
|
||||
trigger: "axis",
|
||||
},
|
||||
xAxis: {
|
||||
type: "value",
|
||||
position: "top",
|
||||
axisLine: {
|
||||
show: true,
|
||||
},
|
||||
},
|
||||
yAxis: {
|
||||
type: "category",
|
||||
data: [],
|
||||
},
|
||||
series: {
|
||||
data: [],
|
||||
type: "bar",
|
||||
barWidth: "15px",
|
||||
},
|
||||
},
|
||||
option10:{
|
||||
title: {
|
||||
text: "10车间人员绩效统计",
|
||||
left: "center",
|
||||
},
|
||||
grid: {
|
||||
top: "80px",
|
||||
},
|
||||
tooltip: {
|
||||
trigger: "axis",
|
||||
},
|
||||
xAxis: {
|
||||
type: "value",
|
||||
position: "top",
|
||||
axisLine: {
|
||||
show: true,
|
||||
},
|
||||
},
|
||||
yAxis: {
|
||||
type: "category",
|
||||
data: [],
|
||||
},
|
||||
series: {
|
||||
data: [],
|
||||
type: "bar",
|
||||
barWidth: "15px",
|
||||
},
|
||||
},
|
||||
tableData6: [],
|
||||
tableData7: [],
|
||||
tableData10: [],
|
||||
chartHeight: 0,
|
||||
};
|
||||
},
|
||||
mounted() {
|
||||
this.$nextTick(() => {
|
||||
this.getData();
|
||||
})
|
||||
},
|
||||
methods: {
|
||||
deepCopy(obj) {
|
||||
return JSON.parse(JSON.stringify(obj));
|
||||
},
|
||||
getData() {
|
||||
let that = this;
|
||||
let obj6 = {
|
||||
query: {
|
||||
start_date: this.start_date,
|
||||
end_date: this.end_date,
|
||||
dept_name: '6车间',
|
||||
},
|
||||
};
|
||||
that.$API.bi.dataset.exec.req("performance", obj6).then((res) => {
|
||||
console.log("绩效统计6:", res);
|
||||
let data = res.data2.ds0;
|
||||
let seriesData = [],yAxisData = [];
|
||||
data.forEach((item) => {
|
||||
item.dept_name = "6车间";
|
||||
seriesData.push(item.合格数);
|
||||
yAxisData.push(item.操作人 + "∙" + item.工段);
|
||||
});
|
||||
that.tableData6 = data;
|
||||
that.option6.yAxis.data = yAxisData;
|
||||
that.option6.series.data = seriesData;
|
||||
});
|
||||
let obj7 = {
|
||||
query: {
|
||||
start_date: this.start_date,
|
||||
end_date: this.end_date,
|
||||
dept_name: '7车间',
|
||||
},
|
||||
};
|
||||
that.$API.bi.dataset.exec.req("performance", obj7).then((res) => {
|
||||
console.log("绩效统计7:", res);
|
||||
let data = res.data2.ds0;
|
||||
let seriesData = [],yAxisData = [];
|
||||
data.forEach((item) => {
|
||||
item.dept_name = "7车间";
|
||||
seriesData.push(item.合格数);
|
||||
yAxisData.push(item.操作人 + "∙" + item.工段);
|
||||
});
|
||||
that.tableData7 = data;
|
||||
that.option7.yAxis.data = yAxisData;
|
||||
that.option7.series.data = seriesData;
|
||||
});
|
||||
let obj10 = {
|
||||
query: {
|
||||
start_date: this.start_date,
|
||||
end_date: this.end_date,
|
||||
dept_name: '10车间',
|
||||
},
|
||||
};
|
||||
that.$API.bi.dataset.exec.req("performance", obj10).then((res) => {
|
||||
console.log("绩效统计10:", res);
|
||||
let data = res.data2.ds0;
|
||||
let seriesData = [],yAxisData = [];
|
||||
data.forEach((item) => {
|
||||
item.dept_name = "10车间";
|
||||
seriesData.push(item.合格数);
|
||||
yAxisData.push(item.操作人 + "∙" + item.工段);
|
||||
});
|
||||
that.tableData10 = data;
|
||||
that.option10.yAxis.data = yAxisData;
|
||||
that.option10.series.data = seriesData;
|
||||
});
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.tables {
|
||||
position: absolute;
|
||||
top: 4px;
|
||||
left: 4px;
|
||||
z-index: 10;
|
||||
}
|
||||
</style>
|
||||
|
|
@ -0,0 +1,213 @@
|
|||
<template>
|
||||
<div>
|
||||
<div v-for="(item, $index) in mgroup" :key="item.id">
|
||||
<scEcharts height="500px" :option="'option'+$index"></scEcharts>
|
||||
<el-table :data="'tableData'+$index" class="exportTables">
|
||||
<el-table-column type="index" width="50" />
|
||||
<el-table-column label="日期" prop="date">
|
||||
<template #default="scope">
|
||||
<span>{{ scope.row.年 }}</span>
|
||||
<span v-if="scope.row.月">-{{ scope.row.月 }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="规格" prop="规格">
|
||||
</el-table-column>
|
||||
<el-table-column label="型号" prop="型号">
|
||||
</el-table-column>
|
||||
<el-table-column label="合格数" prop="合格数">
|
||||
</el-table-column>
|
||||
<el-table-column label="不合格数" prop="合格数">
|
||||
<el-table-column label="条纹" prop="条纹"></el-table-column>
|
||||
<el-table-column label="气泡" prop="气泡"></el-table-column>
|
||||
<el-table-column label="断裂" prop="断裂"></el-table-column>
|
||||
<el-table-column label="气线" prop="气线"></el-table-column>
|
||||
<el-table-column label="炸纹" prop="炸纹"></el-table-column>
|
||||
<el-table-column label="结石" prop="结石"></el-table-column>
|
||||
<el-table-column label="弯曲" prop="弯曲"></el-table-column>
|
||||
<el-table-column label="偏壁" prop="偏壁"></el-table-column>
|
||||
<el-table-column label="大小头" prop="大小头"></el-table-column>
|
||||
<el-table-column label="其他" prop="其他"></el-table-column>
|
||||
<el-table-column label="合计" prop="不合格数"></el-table-column>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import scEcharts from '@/components/scEcharts';
|
||||
const baseOption ={
|
||||
title: {
|
||||
text: '工序检验统计',
|
||||
left: 'center'
|
||||
},
|
||||
tooltip: {
|
||||
trigger: 'item'
|
||||
},
|
||||
series: [
|
||||
{
|
||||
name: '工序检验',
|
||||
type: 'pie',
|
||||
radius: ['40%', '60%'],
|
||||
center: ['50%', '60%'],
|
||||
label: {
|
||||
show: true,
|
||||
formatter: '{b} : {c}',
|
||||
},
|
||||
data: []
|
||||
}
|
||||
]
|
||||
};
|
||||
export default {
|
||||
name: 'all_jy_cjg',
|
||||
props: {
|
||||
queryType:{
|
||||
type: String,
|
||||
default: "月"
|
||||
},
|
||||
queryDate:{
|
||||
type: String,
|
||||
default: ""
|
||||
},
|
||||
start_date:{
|
||||
type: String,
|
||||
default: ""
|
||||
},
|
||||
end_date:{
|
||||
type: String,
|
||||
default: ""
|
||||
},
|
||||
},
|
||||
components: {
|
||||
scEcharts
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
currentYear:'',
|
||||
currentMonth:'',
|
||||
typeOptions:['月','年'],
|
||||
mgroupOption:[],
|
||||
tableData0:[],
|
||||
tableData1:[],
|
||||
tableData2:[],
|
||||
tableData3:[],
|
||||
tableData4:[],
|
||||
tableData5:[],
|
||||
tableData6:[],
|
||||
tableData7:[],
|
||||
tableData8:[],
|
||||
tableData9:[],
|
||||
tableData10:[],
|
||||
tableData11:[],
|
||||
tableData12:[],
|
||||
tableData13:[],
|
||||
tableData14:[],
|
||||
option0:{},
|
||||
option1:{},
|
||||
option2:{},
|
||||
option3:{},
|
||||
option4:{},
|
||||
option5:{},
|
||||
option6:{},
|
||||
option7:{},
|
||||
option8:{},
|
||||
option9:{},
|
||||
option10:{},
|
||||
option11:{},
|
||||
option12:{},
|
||||
option13:{},
|
||||
option14:{},
|
||||
}
|
||||
},
|
||||
mounted(){
|
||||
this.$nextTick(() => {
|
||||
this.getMgroup();
|
||||
})
|
||||
|
||||
},
|
||||
methods:{
|
||||
deepCopy(obj) {
|
||||
return JSON.parse(JSON.stringify(obj));
|
||||
},
|
||||
getMgroup(){
|
||||
let that = this;
|
||||
this.$API.mtm.mgroup.list.req({belong_dept__name:'6车间',page:0}).then((res) => {
|
||||
for(let i=0;i<res.length;i++){
|
||||
that.mgroupsData = res;
|
||||
this.getData(res[i].name,i);
|
||||
}
|
||||
});
|
||||
},
|
||||
getData(name,index){
|
||||
let that = this;
|
||||
let exec = that.queryType=='月'?'lineMonth':'lineYear';
|
||||
let obj = {
|
||||
query: {
|
||||
end_date: that.end_date,
|
||||
start_date: that.start_date,
|
||||
mgroup_name: name,
|
||||
group_bys_material: "",
|
||||
order_bys_material: "",
|
||||
select_cols_material: "",
|
||||
group_bys_mgroup: ", mgroup.name",
|
||||
select_cols_mgroup: ", mgroup.name AS 工段",
|
||||
is_count_utask: -1
|
||||
},
|
||||
};
|
||||
let optionKey = 'option'+index;
|
||||
let tableKey = 'tableData'+index;
|
||||
that[optionKey] = that.deepCopy(baseOption);
|
||||
that[optionKey].title.text= name;
|
||||
//获取echarts数据
|
||||
that.$API.bi.dataset.exec.req(exec, obj).then((res) => {
|
||||
if (res.data2.ds0) {
|
||||
let data = res.data2.ds0;
|
||||
let seriesData = [
|
||||
{value: 0, name: '合格数'},
|
||||
{value: 0, name: '条纹'},
|
||||
{value: 0, name: '气泡'},
|
||||
{value: 0, name: '断裂' },
|
||||
{value: 0, name: '气线' },
|
||||
{value: 0, name: '炸纹'},
|
||||
{value: 0, name: '结石'},
|
||||
{value: 0, name: '弯曲' },
|
||||
{value: 0, name: '偏壁'},
|
||||
{value: 0, name: '大小头'},
|
||||
{value: 0, name: '其他'},
|
||||
];
|
||||
if (data.length > 0) {
|
||||
data.forEach((item) => {
|
||||
seriesData.forEach((item2) => {
|
||||
item2.value += item[item2.name];
|
||||
})
|
||||
})
|
||||
}
|
||||
that[optionKey].series[0].data = seriesData;
|
||||
}
|
||||
});
|
||||
let obj2 = {
|
||||
query: {
|
||||
start_date: that.start_date, end_date: that.end_date,
|
||||
mgroup_name: name,
|
||||
group_bys_mgroup: ", mgroup.name",
|
||||
select_cols_mgroup: ", mgroup.name AS 工段",
|
||||
is_count_utask: -1
|
||||
},
|
||||
};
|
||||
//获取table数据
|
||||
that.$API.bi.dataset.exec.req(exec, obj2).then((res2) => {
|
||||
console.log('获取table数据:', res2.data2.ds0);
|
||||
that[tableKey] = res2.data2.ds0;
|
||||
});
|
||||
},
|
||||
},
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.tables {
|
||||
position: absolute;
|
||||
top: 4px;
|
||||
right: 6px;
|
||||
z-index: 10;
|
||||
}
|
||||
</style>
|
||||
|
|
@ -0,0 +1,506 @@
|
|||
<template>
|
||||
<div>
|
||||
<scEcharts height="300px" :option="option1" style="margin-top: 10px;"></scEcharts>
|
||||
<el-table :data="tableData7" class="exportTables">
|
||||
<el-table-column
|
||||
label="年"
|
||||
prop="年"
|
||||
v-if="queryType == '年'"
|
||||
width="60"
|
||||
>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
label="月"
|
||||
prop="月"
|
||||
v-else
|
||||
width="60"
|
||||
>
|
||||
</el-table-column>
|
||||
<el-table-column label="物料名" prop="物料名">
|
||||
</el-table-column>
|
||||
<el-table-column label="型号" prop="型号">
|
||||
</el-table-column>
|
||||
<el-table-column label="规格" prop="规格">
|
||||
</el-table-column>
|
||||
<el-table-column label="出料数" prop="生产数">
|
||||
</el-table-column>
|
||||
<el-table-column label="合格数" prop="合格数">
|
||||
</el-table-column>
|
||||
<el-table-column label="合格率" prop="合格率">
|
||||
<template #default="scope">
|
||||
<span>{{Math.round(scope.row.合格率)}}%</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
label="不合格原因及数量"
|
||||
align="center"
|
||||
>
|
||||
<el-table-column label="炸纹" prop="炸纹">
|
||||
</el-table-column>
|
||||
<el-table-column label="条纹" prop="条纹">
|
||||
</el-table-column>
|
||||
<el-table-column label="气泡" prop="气泡">
|
||||
</el-table-column>
|
||||
<el-table-column label="弯曲" prop="弯曲">
|
||||
</el-table-column>
|
||||
<el-table-column label="其他" prop="其他">
|
||||
</el-table-column>
|
||||
<el-table-column label="合计" prop="不合格数">
|
||||
</el-table-column>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<scEcharts height="300px" :option="option2" style="margin-top: 10px;"></scEcharts>
|
||||
<el-table :data="tableData10" class="exportTables">
|
||||
<el-table-column
|
||||
label="年"
|
||||
prop="年"
|
||||
v-if="queryType == '年'"
|
||||
width="60"
|
||||
>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
label="月"
|
||||
prop="月"
|
||||
v-else
|
||||
width="60"
|
||||
>
|
||||
</el-table-column>
|
||||
<el-table-column label="物料名" prop="物料名">
|
||||
</el-table-column>
|
||||
<el-table-column label="型号" prop="型号">
|
||||
</el-table-column>
|
||||
<el-table-column label="规格" prop="规格">
|
||||
</el-table-column>
|
||||
<el-table-column label="出料数" prop="生产数">
|
||||
</el-table-column>
|
||||
<el-table-column label="合格数" prop="合格数">
|
||||
</el-table-column>
|
||||
<el-table-column label="合格率">
|
||||
<template #default="scope">
|
||||
<span>{{Math.round(scope.row.合格率)}}%</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
label="不合格原因及数量"
|
||||
align="center"
|
||||
>
|
||||
<el-table-column label="椭圆/弯曲" prop="弯曲">
|
||||
</el-table-column>
|
||||
<el-table-column label="条纹" prop="条纹">
|
||||
</el-table-column>
|
||||
<el-table-column label="断裂" prop="断裂">
|
||||
</el-table-column>
|
||||
<el-table-column label="偏壁" prop="偏壁">
|
||||
</el-table-column>
|
||||
<el-table-column label="大小头" prop="大小头">
|
||||
</el-table-column>
|
||||
<el-table-column label="结石" prop="结石">
|
||||
</el-table-column>
|
||||
<el-table-column label="气线" prop="气线">
|
||||
</el-table-column>
|
||||
<el-table-column label="合计" prop="不合格数">
|
||||
</el-table-column>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<scEcharts height="300px" :option="option3" style="margin-top: 10px;"></scEcharts>
|
||||
<el-table :data="tableData8" class="exportTables">
|
||||
<el-table-column
|
||||
label="年"
|
||||
prop="年"
|
||||
v-if="queryType == '年'"
|
||||
width="60"
|
||||
>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
label="月"
|
||||
prop="月"
|
||||
v-else
|
||||
width="60"
|
||||
>
|
||||
</el-table-column>
|
||||
<el-table-column label="物料名" prop="物料名">
|
||||
</el-table-column>
|
||||
<el-table-column label="型号" prop="型号">
|
||||
</el-table-column>
|
||||
<el-table-column label="规格" prop="规格">
|
||||
</el-table-column>
|
||||
<el-table-column label="出料数" prop="生产数">
|
||||
</el-table-column>
|
||||
<el-table-column label="合格数" prop="合格数">
|
||||
</el-table-column>
|
||||
<el-table-column label="合格率">
|
||||
<template #default="scope">
|
||||
<span>{{Math.round(scope.row.合格率)}}%</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
label="不合格原因及数量"
|
||||
align="center"
|
||||
>
|
||||
<el-table-column label="椭圆/弯曲" prop="弯曲">
|
||||
</el-table-column>
|
||||
<el-table-column label="条纹" prop="条纹">
|
||||
</el-table-column>
|
||||
<el-table-column label="断裂" prop="断裂">
|
||||
</el-table-column>
|
||||
<el-table-column label="偏壁" prop="偏壁">
|
||||
</el-table-column>
|
||||
<el-table-column label="大小头" prop="大小头">
|
||||
</el-table-column>
|
||||
<el-table-column label="结石" prop="结石">
|
||||
</el-table-column>
|
||||
<el-table-column label="气线" prop="气线">
|
||||
</el-table-column>
|
||||
<el-table-column label="箱中破" prop="箱中破">
|
||||
</el-table-column>
|
||||
<el-table-column label="合计" prop="不合格数">
|
||||
</el-table-column>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
const colors = [
|
||||
"rgb(64,158,255)",
|
||||
"#FAFAD2",
|
||||
"#EEE9BF",
|
||||
"#EEDC82",
|
||||
"#EED5B7",
|
||||
"#EEC591",
|
||||
"#EEAD0E",
|
||||
"#EE9A00",
|
||||
"#EE9572",
|
||||
"#F08080",
|
||||
];
|
||||
import scEcharts from "@/components/scEcharts";
|
||||
export default {
|
||||
name: "all_jy_sc",
|
||||
components: {
|
||||
scEcharts,
|
||||
},
|
||||
props: {
|
||||
queryType:{
|
||||
type: String,
|
||||
default: "月"
|
||||
},
|
||||
queryDate:{
|
||||
type: String,
|
||||
default: ""
|
||||
},
|
||||
start_date:{
|
||||
type: String,
|
||||
default: ""
|
||||
},
|
||||
end_date:{
|
||||
type: String,
|
||||
default: ""
|
||||
},
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
currentYear: "",
|
||||
currentMonth: "",
|
||||
typeOptions: ["月", "年"],
|
||||
option1: {
|
||||
color: colors,
|
||||
title: {
|
||||
text: "7车间不合格原因及数量",
|
||||
left: "center",
|
||||
},
|
||||
tooltip: {
|
||||
trigger: "item",
|
||||
},
|
||||
legend: {
|
||||
top: "10%",
|
||||
right:'5%',
|
||||
orient: 'vertical',
|
||||
},
|
||||
series: {
|
||||
name: "7车间预制棒",
|
||||
type: "pie",
|
||||
radius: ["35%", "65%"],
|
||||
center: ["45%", "50%"],
|
||||
label: {
|
||||
show: true,
|
||||
position: "outside",
|
||||
formatter: "{b} : {c} ({d}%)",
|
||||
},
|
||||
data: [
|
||||
{ value: 0, name: "合格数" },
|
||||
{ value: 0, name: "炸纹" },
|
||||
{ value: 0, name: "条纹" },
|
||||
{ value: 0, name: "气泡" },
|
||||
{ value: 0, name: "弯曲" },
|
||||
{ value: 0, name: "其他" },
|
||||
],
|
||||
},
|
||||
},
|
||||
option2: {
|
||||
color: colors,
|
||||
title: {
|
||||
text: "10车间不合格原因及数量",
|
||||
left: "center",
|
||||
},
|
||||
tooltip: {
|
||||
trigger: "item",
|
||||
},
|
||||
legend: {
|
||||
top: "10%",
|
||||
right:'5%',
|
||||
orient: 'vertical',
|
||||
},
|
||||
series: {
|
||||
name: "10车间预制管检验统计",
|
||||
type: "pie",
|
||||
radius: ["35%", "65%"],
|
||||
center: ["45%", "50%"],
|
||||
label: {
|
||||
show: true,
|
||||
position: "outside",
|
||||
formatter: "{b} : {c} ({d}%)",
|
||||
},
|
||||
data: [
|
||||
{ value: 0, name: "合格数" },
|
||||
{ value: 0, name: "条纹" },
|
||||
{ value: 0, name: "断裂" },
|
||||
{ value: 0, name: "偏壁" },
|
||||
{ value: 0, name: "大小头" },
|
||||
{ value: 0, name: "结石" },
|
||||
{ value: 0, name: "气线" },
|
||||
],
|
||||
},
|
||||
},
|
||||
option3: {
|
||||
color: colors,
|
||||
title: {
|
||||
text: "退火不合格原因及数量",
|
||||
left: "center",
|
||||
// subtext: '',
|
||||
},
|
||||
tooltip: {
|
||||
trigger: "item",
|
||||
},
|
||||
legend: {
|
||||
top: "10%",
|
||||
right:'5%',
|
||||
orient: 'vertical',
|
||||
},
|
||||
series: {
|
||||
name: "退火预制管",
|
||||
type: "pie",
|
||||
radius: ["35%", "65%"],
|
||||
center: ["45%", "50%"],
|
||||
label: {
|
||||
show: true,
|
||||
position: "outside",
|
||||
formatter: "{b} : {c} ({d}%)",
|
||||
},
|
||||
data: [
|
||||
{ value: 0, name: "合格数" },
|
||||
{ value: 0, name: "椭圆/弯曲" },
|
||||
{ value: 0, name: "条纹" },
|
||||
{ value: 0, name: "断裂" },
|
||||
{ value: 0, name: "偏壁" },
|
||||
{ value: 0, name: "大小头" },
|
||||
{ value: 0, name: "结石" },
|
||||
{ value: 0, name: "气线" },
|
||||
{ value: 0, name: "箱中破" },
|
||||
],
|
||||
},
|
||||
},
|
||||
tableData7: [],
|
||||
tableData10: [],
|
||||
tableData8: [],
|
||||
};
|
||||
},
|
||||
mounted() {
|
||||
this.$nextTick(() => {
|
||||
this.getData();
|
||||
this.getData7();
|
||||
this.getData10();
|
||||
})
|
||||
},
|
||||
methods: {
|
||||
getData() {
|
||||
let that = this;
|
||||
that.tableData8 = [];
|
||||
let exec = that.queryType == "月" ? "lineMonth" : "lineYear";
|
||||
let obj = {
|
||||
query: {
|
||||
start_date: this.start_date,
|
||||
end_date: this.end_date,
|
||||
mgroup_name: "管料退火",
|
||||
is_count_utask: -1,
|
||||
},
|
||||
};
|
||||
that.$API.bi.dataset.exec.req(exec, obj).then((res) => {
|
||||
console.log("退火车间统计:", res);
|
||||
if (res.data2.ds0) {
|
||||
let data = res.data2.ds0;
|
||||
that.tableData8 = data;
|
||||
} else {
|
||||
that.tableData8 = [];
|
||||
}
|
||||
});
|
||||
//获取echarts数据
|
||||
let obj2 = {
|
||||
query: {
|
||||
start_date: this.start_date,
|
||||
end_date: this.end_date,
|
||||
mgroup_name: "管料退火",
|
||||
group_bys_material: "",
|
||||
order_bys_material: "",
|
||||
select_cols_material: "",
|
||||
is_count_utask: -1,
|
||||
},
|
||||
};
|
||||
that.$API.bi.dataset.exec.req(exec, obj2).then((res2) => {
|
||||
console.log("退火车间统计:", res2);
|
||||
if (res2.data2.ds0) {
|
||||
that.option3.series.data[0].value=0;
|
||||
that.option3.series.data[1].value=0;
|
||||
that.option3.series.data[2].value=0;
|
||||
that.option3.series.data[3].value=0;
|
||||
that.option3.series.data[4].value=0;
|
||||
that.option3.series.data[5].value=0;
|
||||
that.option3.series.data[6].value=0;
|
||||
that.option3.series.data[7].value=0;
|
||||
that.option3.series.data[8].value=0;
|
||||
let data = res2.data2.ds0;
|
||||
if (data.length > 0) {
|
||||
data.forEach((item) => {
|
||||
that.option3.series.data[0].value += item.合格数;
|
||||
that.option3.series.data[1].value += item.弯曲;
|
||||
that.option3.series.data[2].value += item.条纹;
|
||||
that.option3.series.data[3].value += item.断裂;
|
||||
that.option3.series.data[4].value += item.偏壁;
|
||||
that.option3.series.data[5].value += item.大小头;
|
||||
that.option3.series.data[6].value += item.结石;
|
||||
that.option3.series.data[7].value += item.气线;
|
||||
that.option3.series.data[8].value += item.箱中破;
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
},
|
||||
getData7() {
|
||||
let that = this;
|
||||
that.tableData7 = [];
|
||||
let obj = {
|
||||
query: {
|
||||
start_date: this.start_date,
|
||||
end_date: this.end_date,
|
||||
dept_name: "7车间",
|
||||
},
|
||||
};
|
||||
let exec = that.queryType == "月" ? "lineMonth" : "lineYear";
|
||||
that.$API.bi.dataset.exec.req(exec, obj).then((res) => {
|
||||
console.log("7生产车间统计:", res);
|
||||
if (res.data2.ds0) {
|
||||
let data = res.data2.ds0;
|
||||
that.tableData7 = data;
|
||||
} else {
|
||||
that.tableData7 = [];
|
||||
}
|
||||
});
|
||||
//获取echarts数据
|
||||
let obj2 = {
|
||||
query: {
|
||||
start_date: this.start_date,
|
||||
end_date: this.end_date,
|
||||
dept_name: "7车间",
|
||||
group_bys_material: "",
|
||||
order_bys_material: "",
|
||||
select_cols_material: "",
|
||||
},
|
||||
};
|
||||
that.$API.bi.dataset.exec.req(exec, obj2).then((res2) => {
|
||||
console.log("7生产车间统计:", res2);
|
||||
if (res2.data2.ds0) {
|
||||
that.option1.series.data[0].value=0;
|
||||
that.option1.series.data[1].value=0;
|
||||
that.option1.series.data[2].value=0;
|
||||
that.option1.series.data[3].value=0;
|
||||
that.option1.series.data[4].value=0;
|
||||
that.option1.series.data[5].value=0;
|
||||
let data = res2.data2.ds0;
|
||||
if (data.length > 0) {
|
||||
data.forEach((item) => {
|
||||
that.option1.series.data[0].value += item.合格数;
|
||||
that.option1.series.data[1].value += item.炸纹;
|
||||
that.option1.series.data[2].value += item.条纹;
|
||||
that.option1.series.data[3].value += item.气泡;
|
||||
that.option1.series.data[4].value += item.弯曲;
|
||||
that.option1.series.data[5].value += item.其他;
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
},
|
||||
getData10() {
|
||||
let that = this;
|
||||
that.tableData10 = [];
|
||||
let obj = {
|
||||
query: {
|
||||
start_date: this.start_date,
|
||||
end_date: this.end_date,
|
||||
dept_name: "10车间",
|
||||
},
|
||||
};
|
||||
let exec = that.queryType == "月" ? "lineMonth" : "lineYear";
|
||||
that.$API.bi.dataset.exec.req(exec, obj).then((res) => {
|
||||
console.log("10生产车间统计:", res);
|
||||
if (res.data2.ds0) {
|
||||
let data = res.data2.ds0;
|
||||
that.tableData10 = data;
|
||||
} else {
|
||||
that.tableData10 = [];
|
||||
}
|
||||
});
|
||||
//获取echarts数据
|
||||
let obj2 = {
|
||||
query: {
|
||||
start_date: this.start_date,
|
||||
end_date: this.end_date,
|
||||
dept_name: "10车间",
|
||||
group_bys_material: "",
|
||||
order_bys_material: "",
|
||||
select_cols_material: "",
|
||||
},
|
||||
};
|
||||
that.$API.bi.dataset.exec.req(exec, obj2).then((res2) => {
|
||||
console.log("10生产车间统计:", res2);
|
||||
if (res2.data2.ds0) {
|
||||
let data = res2.data2.ds0;
|
||||
that.option2.series.data[0].value=0;
|
||||
that.option2.series.data[1].value=0;
|
||||
that.option2.series.data[2].value=0;
|
||||
that.option2.series.data[3].value=0;
|
||||
that.option2.series.data[4].value=0;
|
||||
that.option2.series.data[5].value=0;
|
||||
that.option2.series.data[6].value=0;
|
||||
if (data.length > 0) {
|
||||
data.forEach((item) => {
|
||||
that.option2.series.data[0].value += item.合格数;
|
||||
that.option2.series.data[1].value += item.断裂;
|
||||
that.option2.series.data[2].value += item.条纹;
|
||||
that.option2.series.data[3].value += item.偏壁;
|
||||
that.option2.series.data[4].value += item.大小头;
|
||||
that.option2.series.data[5].value += item.结石;
|
||||
that.option2.series.data[6].value += item.气线;
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
<style scoped>
|
||||
.tables {
|
||||
position: absolute;
|
||||
top: 4px;
|
||||
right: 14px;
|
||||
z-index: 10;
|
||||
}
|
||||
</style>
|
||||
|
|
@ -0,0 +1,425 @@
|
|||
<template>
|
||||
<div>
|
||||
<!-- 10 成品-->
|
||||
<p class="titleText">当前成品库存</p>
|
||||
<scTable :data="tableData10" class="exportTables" stripe hideDo hidePagination>
|
||||
<el-table-column type="index" width="50" />
|
||||
<el-table-column label="物料名" prop="material_name" />
|
||||
<el-table-column label="型号" prop="material_model" />
|
||||
<el-table-column label="规格" prop="material_specification" />
|
||||
<el-table-column label="完成车间" prop="dept_name" />
|
||||
<el-table-column label="库存总数" prop="count" />
|
||||
</scTable>
|
||||
<!-- 20 半成品 -->
|
||||
<p class="titleText">当前半成品库存</p>
|
||||
<scTable :data="tableData20" class="exportTables" stripe hideDo hidePagination>
|
||||
<el-table-column type="index" width="50" />
|
||||
<el-table-column label="物料名" prop="material_name" />
|
||||
<el-table-column label="型号" prop="material_model" />
|
||||
<el-table-column label="规格" prop="material_specification"/>
|
||||
<el-table-column label="完成车间" prop="dept_name" />
|
||||
<el-table-column label="库存总数" prop="count" />
|
||||
</scTable>
|
||||
<!-- 30原料 -->
|
||||
<p class="titleText">当前原料库存</p>
|
||||
<scTable class="exportTables" :apiObj="apiObj" :params="params30" stripe hideDo hidePagination>
|
||||
<el-table-column type="index" width="50" />
|
||||
<el-table-column label="物料名" prop="name">
|
||||
</el-table-column>
|
||||
<el-table-column label="型号" prop="model">
|
||||
</el-table-column>
|
||||
<el-table-column label="规格" prop="specification">
|
||||
</el-table-column>
|
||||
<el-table-column label="库存总数" prop="count_mb">
|
||||
</el-table-column>
|
||||
<el-table-column label="周预估值" prop="week_esitimate_consume">
|
||||
</el-table-column>
|
||||
<el-table-column label="可用天数">
|
||||
<template #default="scope">
|
||||
<span v-if="scope.row.week_esitimate_consume &&scope.row.week_esitimate_consume !==null">
|
||||
{{Math.floor(scope.row.count_mb /scope.row.week_esitimate_consume) * 7}}
|
||||
</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</scTable>
|
||||
<!-- 40辅料 -->
|
||||
<p class="titleText">当前辅料库存</p>
|
||||
<scTable class="exportTables" :apiObj="apiObj" :params="params40" stripe hideDo hidePagination>
|
||||
<el-table-column type="index" width="50" />
|
||||
<el-table-column label="物料名" prop="name">
|
||||
</el-table-column>
|
||||
<el-table-column label="型号" prop="model">
|
||||
</el-table-column>
|
||||
<el-table-column label="规格" prop="specification">
|
||||
</el-table-column>
|
||||
<el-table-column label="库存总数" prop="count_mb">
|
||||
</el-table-column>
|
||||
</scTable>
|
||||
<!-- 采购入库 -->
|
||||
<p class="titleText">采购入库统计</p>
|
||||
<scTable class="exportTables"
|
||||
v-if="tableDatapur_in.length > 0"
|
||||
:data="tableDatapur_in"
|
||||
stripe
|
||||
hideDo
|
||||
hidePagination
|
||||
>
|
||||
<el-table-column label="物料名" prop="物料名">
|
||||
</el-table-column>
|
||||
<el-table-column label="型号" prop="型号">
|
||||
</el-table-column>
|
||||
<el-table-column label="规格" prop="规格">
|
||||
</el-table-column>
|
||||
<el-table-column label="出入库类型">采购入库
|
||||
</el-table-column>
|
||||
<el-table-column label="执行车间" prop="执行车间">
|
||||
</el-table-column>
|
||||
<template v-if="queryType == '月'">
|
||||
<el-table-column label="月入库总数" prop="数量">
|
||||
</el-table-column>
|
||||
</template>
|
||||
<template v-if=" queryType == '年'">
|
||||
<el-table-column label="年入库总数" prop="数量">
|
||||
</el-table-column>
|
||||
</template>
|
||||
</scTable>
|
||||
<!-- 销售发货 -->
|
||||
<p class="titleText">销售发货统计</p>
|
||||
<scTable class="exportTables"
|
||||
v-if="tableDatasale_out.length > 0"
|
||||
:data="tableDatasale_out"
|
||||
stripe
|
||||
hideDo
|
||||
hidePagination
|
||||
>
|
||||
<el-table-column label="物料名" prop="物料名">
|
||||
</el-table-column>
|
||||
<el-table-column label="型号" prop="型号">
|
||||
</el-table-column>
|
||||
<el-table-column label="规格" prop="规格">
|
||||
</el-table-column>
|
||||
<el-table-column label="出入库类型">销售发货
|
||||
</el-table-column>
|
||||
<el-table-column label="执行车间" prop="执行车间">
|
||||
</el-table-column>
|
||||
<template v-if="queryType == '月'">
|
||||
<el-table-column label="月出库数量" prop="数量">
|
||||
</el-table-column>
|
||||
</template>
|
||||
<template v-if="queryType == '年'">
|
||||
<el-table-column label="年出库总数" prop="数量">
|
||||
</el-table-column>
|
||||
</template>
|
||||
</scTable>
|
||||
<!-- 生产入库 -->
|
||||
<p class="titleText">生产入库统计</p>
|
||||
<scTable class="exportTables"
|
||||
v-if="tableDatado_in.length > 0"
|
||||
:data="tableDatado_in"
|
||||
stripe
|
||||
hideDo
|
||||
hidePagination
|
||||
>
|
||||
<el-table-column label="物料名" prop="物料名">
|
||||
</el-table-column>
|
||||
<el-table-column label="型号" prop="型号">
|
||||
</el-table-column>
|
||||
<el-table-column label="规格" prop="规格">
|
||||
</el-table-column>
|
||||
<el-table-column label="出入库类型">生产入库
|
||||
</el-table-column>
|
||||
<el-table-column label="执行车间" prop="执行车间">
|
||||
</el-table-column>
|
||||
<template v-if="queryType == '月'">
|
||||
<el-table-column label="月入库总数" prop="数量">
|
||||
</el-table-column>
|
||||
</template>
|
||||
<template v-if="queryType == '年'">
|
||||
<el-table-column label="年入库总数" prop="数量">
|
||||
</el-table-column>
|
||||
</template>
|
||||
</scTable>
|
||||
<!-- 生产领料 -->
|
||||
<p class="titleText">生产领料统计</p>
|
||||
<scTable class="exportTables"
|
||||
v-if="tableDatado_out.length > 0"
|
||||
:data="tableDatado_out"
|
||||
stripe
|
||||
hideDo
|
||||
hidePagination
|
||||
>
|
||||
<el-table-column label="物料名" prop="物料名">
|
||||
</el-table-column>
|
||||
<el-table-column label="型号" prop="型号">
|
||||
</el-table-column>
|
||||
<el-table-column label="规格" prop="规格">
|
||||
</el-table-column>
|
||||
<el-table-column label="出入库类型">生产领料
|
||||
</el-table-column>
|
||||
<el-table-column label="执行车间" prop="执行车间">
|
||||
</el-table-column>
|
||||
<template v-if="queryType == '月'">
|
||||
<el-table-column label="月出库数量" prop="数量">
|
||||
</el-table-column>
|
||||
</template>
|
||||
<template v-if="queryType == '年'">
|
||||
<el-table-column label="年出库总数" prop="数量">
|
||||
</el-table-column>
|
||||
</template>
|
||||
</scTable>
|
||||
<!-- 其他入库 -->
|
||||
<p class="titleText">其他入库统计</p>
|
||||
<scTable class="exportTables"
|
||||
v-if="tableDataother_in.length > 0"
|
||||
:data="tableDataother_in"
|
||||
stripe
|
||||
hideDo
|
||||
hidePagination
|
||||
>
|
||||
<el-table-column label="物料名" prop="物料名">
|
||||
</el-table-column>
|
||||
<el-table-column label="型号" prop="型号">
|
||||
</el-table-column>
|
||||
<el-table-column label="规格" prop="规格">
|
||||
</el-table-column>
|
||||
<el-table-column label="出入库类型">其他入库
|
||||
</el-table-column>
|
||||
<el-table-column label="执行车间" prop="执行车间">
|
||||
</el-table-column>
|
||||
<template v-if="queryType == '月'">
|
||||
<el-table-column label="月入库总数" prop="数量">
|
||||
</el-table-column>
|
||||
</template>
|
||||
<template
|
||||
v-if="queryType == '年'">
|
||||
<el-table-column label="年入库总数" prop="数量">
|
||||
</el-table-column>
|
||||
</template>
|
||||
</scTable>
|
||||
<!-- 其他出库 -->
|
||||
<p class="titleText">其他出库统计</p>
|
||||
<scTable class="exportTables"
|
||||
v-if="tableDataother_out.length > 0"
|
||||
:data="tableDataother_out"
|
||||
stripe
|
||||
hideDo
|
||||
hidePagination
|
||||
>
|
||||
<el-table-column label="物料名" prop="物料名">
|
||||
</el-table-column>
|
||||
<el-table-column label="型号" prop="型号">
|
||||
</el-table-column>
|
||||
<el-table-column label="规格" prop="规格">
|
||||
</el-table-column>
|
||||
<el-table-column label="出入库类型">其他出库
|
||||
</el-table-column>
|
||||
<el-table-column label="执行车间" prop="执行车间">
|
||||
</el-table-column>
|
||||
<template v-if="queryType == '月'">
|
||||
<el-table-column label="月出库数量" prop="数量">
|
||||
</el-table-column>
|
||||
</template>
|
||||
<template v-if=" queryType == '年'">
|
||||
<el-table-column label="年出库总数" prop="数量">
|
||||
</el-table-column>
|
||||
</template>
|
||||
</scTable>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
export default {
|
||||
name: "all_kc",
|
||||
props: {
|
||||
queryType:{
|
||||
type: String,
|
||||
default: "月"
|
||||
},
|
||||
queryDate:{
|
||||
type: String,
|
||||
default: ""
|
||||
},
|
||||
start_date:{
|
||||
type: String,
|
||||
default: ""
|
||||
},
|
||||
end_date:{
|
||||
type: String,
|
||||
default: ""
|
||||
},
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
apiObj: this.$API.mtm.material.list,
|
||||
params10: { is_hidden: false, type: 10, count__gte: 1 },
|
||||
params20: { is_hidden: false, type: 20, count__gte: 1 },
|
||||
params30: { is_hidden: false, type: 30, count__gte: 1 },
|
||||
params40: { is_hidden: false, type: 40, count__gte: 1 },
|
||||
currentYear: "",
|
||||
currentMonth: "",
|
||||
currentLastDay: "",
|
||||
tableData10: [],
|
||||
tableData20: [],
|
||||
tableDatapur_in: [],
|
||||
tableDatasale_out: [],
|
||||
tableDatado_in: [],
|
||||
tableDatado_out: [],
|
||||
tableDataother_in: [],
|
||||
tableDataother_out: [],
|
||||
typeOptions: ["月", "年"],
|
||||
};
|
||||
},
|
||||
mounted() {
|
||||
let that = this;
|
||||
that.$nextTick(() => {
|
||||
that.getTableData10();
|
||||
that.getTableData20();
|
||||
that.getTableDataPurin();
|
||||
that.getTableDataSaleout();
|
||||
that.getTableDataDoout();
|
||||
that.getTableDataDoin();
|
||||
that.getTableDataOtherin();
|
||||
that.getTableDataOtherout();
|
||||
})
|
||||
},
|
||||
methods: {
|
||||
getTableData10(){
|
||||
let that = this;
|
||||
let obj = {
|
||||
query: {material_types: 10},
|
||||
};
|
||||
that.$API.bi.dataset.exec.req("materialCount", obj).then((res) => {
|
||||
if (res.data2.ds0) {
|
||||
that.tableData10 = res.data2.ds0;
|
||||
}
|
||||
});
|
||||
},
|
||||
getTableData20(){
|
||||
let that = this;
|
||||
let obj = {
|
||||
query: {material_types: 20},
|
||||
};
|
||||
that.$API.bi.dataset.exec.req("materialCount", obj).then((res) => {
|
||||
if (res.data2.ds0) {
|
||||
that.tableData20 = res.data2.ds0;
|
||||
}
|
||||
});
|
||||
},
|
||||
//采购入库
|
||||
getTableDataPurin() {
|
||||
let that = this;
|
||||
let exec = that.queryType == "月" ? "saleOutMonth" : "saleOutYear";
|
||||
let obj = {
|
||||
query: {
|
||||
start_date: that.start_date,
|
||||
end_date: that.end_date,
|
||||
mio_type: 'pur_in',
|
||||
},
|
||||
};
|
||||
that.$API.bi.dataset.exec.req(exec, obj).then((res) => {
|
||||
if (res.data2.ds0) {
|
||||
let data = res.data2.ds0;
|
||||
that.tableDatapur_in = data;
|
||||
}
|
||||
});
|
||||
},
|
||||
//销售发货
|
||||
getTableDataSaleout() {
|
||||
let that = this;
|
||||
let exec = that.queryType == "月" ? "saleOutMonth" : "saleOutYear";
|
||||
let obj = {
|
||||
query: {
|
||||
start_date: that.start_date,
|
||||
end_date: that.end_date,
|
||||
mio_type: 'sale_out',
|
||||
},
|
||||
};
|
||||
that.$API.bi.dataset.exec.req(exec, obj).then((res) => {
|
||||
if (res.data2.ds0) {
|
||||
let data = res.data2.ds0;
|
||||
that.tableDatasale_out = data;
|
||||
}
|
||||
});
|
||||
},
|
||||
//生产领料
|
||||
getTableDataDoout() {
|
||||
let that = this;
|
||||
let exec = that.queryType == "月" ? "saleOutMonth" : "saleOutYear";
|
||||
let obj = {
|
||||
query: {
|
||||
start_date: that.start_date,
|
||||
end_date: that.end_date,
|
||||
mio_type: 'do_out',
|
||||
},
|
||||
};
|
||||
that.$API.bi.dataset.exec.req(exec, obj).then((res) => {
|
||||
if (res.data2.ds0) {
|
||||
let data = res.data2.ds0;
|
||||
that.tableDatado_out = data;
|
||||
}
|
||||
});
|
||||
},
|
||||
//生产入库
|
||||
getTableDataDoin() {
|
||||
let that = this;
|
||||
let exec = that.queryType == "月" ? "saleOutMonth" : "saleOutYear";
|
||||
let obj = {
|
||||
query: {
|
||||
start_date: that.start_date,
|
||||
end_date: that.end_date,
|
||||
mio_type: 'do_in',
|
||||
},
|
||||
};
|
||||
that.$API.bi.dataset.exec.req(exec, obj).then((res) => {
|
||||
if (res.data2.ds0) {
|
||||
let data = res.data2.ds0;
|
||||
that.tableDatado_in = data;
|
||||
}
|
||||
});
|
||||
},
|
||||
//其他入库
|
||||
getTableDataOtherin() {
|
||||
let that = this;
|
||||
let exec = that.queryType == "月" ? "saleOutMonth" : "saleOutYear";
|
||||
let obj = {
|
||||
query: {
|
||||
start_date: that.start_date,
|
||||
end_date: that.end_date,
|
||||
mio_type: 'other_in',
|
||||
},
|
||||
};
|
||||
that.$API.bi.dataset.exec.req(exec, obj).then((res) => {
|
||||
if (res.data2.ds0) {
|
||||
let data = res.data2.ds0;
|
||||
that.tableDataother_in = data;
|
||||
}
|
||||
});
|
||||
},
|
||||
//其他出库
|
||||
getTableDataOtherout() {
|
||||
let that = this;
|
||||
let exec = that.queryType == "月" ? "saleOutMonth" : "saleOutYear";
|
||||
let obj = {
|
||||
query: {
|
||||
start_date: that.start_date,
|
||||
end_date: that.end_date,
|
||||
mio_type: 'other_out',
|
||||
},
|
||||
};
|
||||
that.$API.bi.dataset.exec.req(exec, obj).then((res) => {
|
||||
if (res.data2.ds0) {
|
||||
let data = res.data2.ds0;
|
||||
that.tableDataother_out = data;
|
||||
}
|
||||
});
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
<style lang="scss">
|
||||
.titleText{
|
||||
font-size: 18px;
|
||||
font-weight: 600;
|
||||
text-align: center;
|
||||
margin: 10px;
|
||||
}
|
||||
</style>
|
||||
|
|
@ -0,0 +1,167 @@
|
|||
<template>
|
||||
<div>
|
||||
<scEcharts height="300px" :option="option" style="margin-top: 10px;"></scEcharts>
|
||||
<el-table :data="tableData" class="exportTables">
|
||||
<el-table-column type="index" width="50" />
|
||||
<el-table-column label="工段" prop="工段">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
label="物料名"
|
||||
prop="物料名"
|
||||
min-width="100"
|
||||
>
|
||||
</el-table-column>
|
||||
<el-table-column label="任务数" prop="任务数">
|
||||
</el-table-column>
|
||||
<el-table-column label="生产数" prop="生产数">
|
||||
</el-table-column>
|
||||
<el-table-column label="合格数" prop="合格数">
|
||||
</el-table-column>
|
||||
<el-table-column label="不合格数" prop="不合格数">
|
||||
</el-table-column>
|
||||
<el-table-column label="完成进度" prop="完成进度">
|
||||
<template #default="scope">
|
||||
<span v-if="scope.row.完成进度&&scope.row.完成进度>0">{{(scope.row.完成进度).toFixed(2)}}%</span>
|
||||
<span v-else>{{scope.row.完成进度}}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="合格率" prop="合格率">
|
||||
<template #default="scope">
|
||||
<span v-if="scope.row.合格率&&scope.row.合格率>0">{{(scope.row.合格率).toFixed(2)}}%</span>
|
||||
<span v-else>{{scope.row.合格率}}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import scEcharts from "@/components/scEcharts";
|
||||
export default {
|
||||
name: "all_sc_gx",
|
||||
components: {
|
||||
scEcharts,
|
||||
},
|
||||
props: {
|
||||
queryType:{
|
||||
type: String,
|
||||
default: "月"
|
||||
},
|
||||
queryDate:{
|
||||
type: String,
|
||||
default: ""
|
||||
},
|
||||
start_date:{
|
||||
type: String,
|
||||
default: ""
|
||||
},
|
||||
end_date:{
|
||||
type: String,
|
||||
default: ""
|
||||
},
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
currentYear: "",
|
||||
currentMonth: "",
|
||||
typeOptions: ["月", "年"],
|
||||
option: {
|
||||
title: {
|
||||
text: "6车间工序合格数统计",
|
||||
left: "center",
|
||||
},
|
||||
grid: {
|
||||
top: "80px",
|
||||
},
|
||||
tooltip: {
|
||||
trigger: "axis",
|
||||
},
|
||||
legend: {
|
||||
top: "10%",
|
||||
icon: "stack",
|
||||
right:'10%',
|
||||
},
|
||||
xAxis: {
|
||||
type: "category",
|
||||
data: [],
|
||||
},
|
||||
yAxis: {
|
||||
type: "value",
|
||||
},
|
||||
series: [],
|
||||
},
|
||||
processData: [],
|
||||
xAxisData: [],
|
||||
tableData: [],
|
||||
};
|
||||
},
|
||||
mounted() {
|
||||
let that = this;
|
||||
that.$nextTick(() => {
|
||||
that.getData6();
|
||||
})
|
||||
},
|
||||
methods: {
|
||||
getData6() {
|
||||
let that = this;
|
||||
let obj = {
|
||||
query: {
|
||||
start_date: that.start_date,
|
||||
end_date: that.end_date,
|
||||
dept_name: "6车间",
|
||||
select_cols_material: "",
|
||||
group_bys_material: "",
|
||||
order_bys_material: "",
|
||||
is_count_utask: -1,
|
||||
select_cols_mgroup: ", mgroup.name AS 工段",
|
||||
group_bys_mgroup: ", mgroup.name",
|
||||
order_bys_mgroup:",工段"
|
||||
},
|
||||
raise_exception: true,
|
||||
};
|
||||
if (that.queryType == "月") {
|
||||
obj.query.select_cols_date =
|
||||
",EXTRACT ( MONTH FROM mlog.handle_date ) AS 月";
|
||||
obj.query.group_bys_date =
|
||||
",EXTRACT ( MONTH FROM mlog.handle_date )";
|
||||
obj.query.order_bys_date = ", 月";
|
||||
}
|
||||
let xAxisData = [],nameData=[],seriesData=[];
|
||||
that.$API.bi.dataset.exec.req("lineWeek", obj).then((res) => {
|
||||
let data = res.data2.ds0;
|
||||
that.tableData = data;
|
||||
data.forEach((item) => {
|
||||
if (xAxisData.indexOf(item.工段) > -1) {
|
||||
} else {
|
||||
xAxisData.push(item.工段);
|
||||
}
|
||||
if (nameData.indexOf(item.物料名) > -1) {
|
||||
} else {
|
||||
nameData.push(item.物料名);
|
||||
let obj = {
|
||||
name:'',
|
||||
type: "bar",
|
||||
label:{
|
||||
show: true,
|
||||
position: "top",
|
||||
formatter: "{c}"
|
||||
},
|
||||
barWidth: "15px",
|
||||
data:[0, 0, 0, 0, 0, 0, 0, 0],
|
||||
};
|
||||
obj.name=item.物料名,
|
||||
seriesData.push(obj);
|
||||
}
|
||||
let index = xAxisData.indexOf(item.工段);
|
||||
let indexY = nameData.indexOf(item.物料名);
|
||||
seriesData[indexY].data[index] += item.合格数;
|
||||
});
|
||||
that.xAxisData = xAxisData;
|
||||
that.option.xAxis.data = that.xAxisData;
|
||||
that.option.series = seriesData;
|
||||
});
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
|
|
@ -0,0 +1,478 @@
|
|||
<template>
|
||||
<div>
|
||||
<div id="bachart1"></div>
|
||||
<el-table :data="tableData7" class="exportTables">
|
||||
<el-table-column type="index" width="50" />
|
||||
<el-table-column
|
||||
label="物料名"
|
||||
prop="物料名"
|
||||
min-width="100"
|
||||
>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
label="月份"
|
||||
prop="月"
|
||||
v-if="queryType == '年'"
|
||||
width="50"
|
||||
>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
label="周"
|
||||
prop="周"
|
||||
v-else
|
||||
width="50"
|
||||
>
|
||||
</el-table-column>
|
||||
<el-table-column label="型号" prop="型号">
|
||||
</el-table-column>
|
||||
<el-table-column label="规格" prop="规格">
|
||||
</el-table-column>
|
||||
<el-table-column label="任务数" prop="任务数">
|
||||
</el-table-column>
|
||||
<el-table-column label="生产数" prop="生产数">
|
||||
</el-table-column>
|
||||
<el-table-column label="合格数" prop="合格数">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
label="不合格数"
|
||||
prop="不合格数"
|
||||
>
|
||||
</el-table-column>
|
||||
<el-table-column label="合格率" prop="合格率">
|
||||
<template #default="scope">
|
||||
{{ Math.round(scope.row.合格率) }}%
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<div id="bachart2"></div>
|
||||
<el-table :data="tableData10" class="exportTables">
|
||||
<el-table-column type="index" width="50" />
|
||||
<el-table-column
|
||||
label="物料名"
|
||||
prop="物料名"
|
||||
min-width="100"
|
||||
>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
label="月份"
|
||||
prop="月"
|
||||
v-if="queryType == '年'"
|
||||
>
|
||||
</el-table-column>
|
||||
<el-table-column label="周" prop="周" v-else>
|
||||
</el-table-column>
|
||||
<el-table-column label="型号" prop="型号">
|
||||
</el-table-column>
|
||||
<el-table-column label="规格" prop="规格">
|
||||
</el-table-column>
|
||||
<el-table-column label="任务数" prop="任务数">
|
||||
</el-table-column>
|
||||
<el-table-column label="生产数" prop="生产数">
|
||||
</el-table-column>
|
||||
<el-table-column label="合格数" prop="合格数">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
label="不合格数"
|
||||
prop="不合格数"
|
||||
>
|
||||
</el-table-column>
|
||||
<el-table-column label="合格率" prop="合格率">
|
||||
<template #default="scope">
|
||||
{{ Math.round(scope.row.合格率) }}%
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<div id="bachart3"></div>
|
||||
<el-table :data="tableData6" class="exportTables">
|
||||
<el-table-column type="index" width="50" />
|
||||
<el-table-column
|
||||
label="物料名"
|
||||
prop="物料名"
|
||||
min-width="100"
|
||||
>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
label="物料系列"
|
||||
prop="物料系列"
|
||||
>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
label="月份"
|
||||
prop="月"
|
||||
v-if="queryType == '年'"
|
||||
>
|
||||
</el-table-column>
|
||||
<el-table-column label="周" prop="周" v-else>
|
||||
</el-table-column>
|
||||
<el-table-column label="型号" prop="型号">
|
||||
</el-table-column>
|
||||
<el-table-column label="规格" prop="规格">
|
||||
</el-table-column>
|
||||
<el-table-column label="任务数" prop="任务数">
|
||||
</el-table-column>
|
||||
<el-table-column label="生产数" prop="生产数">
|
||||
</el-table-column>
|
||||
<el-table-column label="合格数" prop="合格数">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
label="不合格数"
|
||||
prop="不合格数"
|
||||
>
|
||||
</el-table-column>
|
||||
<el-table-column label="合格率" prop="合格率">
|
||||
<template #default="scope">
|
||||
{{ Math.round(scope.row.合格率) }}%
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import * as echarts from "echarts";
|
||||
import T from "@/components/scEcharts/echarts-theme-T.js";
|
||||
echarts.registerTheme("T", T);
|
||||
import scEcharts from "@/components/scEcharts";
|
||||
function deepCopy(obj) {
|
||||
return JSON.parse(JSON.stringify(obj));
|
||||
}
|
||||
export default {
|
||||
name: "all_sc_hg",
|
||||
props: {
|
||||
queryType:{
|
||||
type: String,
|
||||
default: "月"
|
||||
},
|
||||
queryDate:{
|
||||
type: String,
|
||||
default: ""
|
||||
},
|
||||
start_date:{
|
||||
type: String,
|
||||
default: ""
|
||||
},
|
||||
end_date:{
|
||||
type: String,
|
||||
default: ""
|
||||
},
|
||||
firstWeekNum:{
|
||||
type: String,
|
||||
default: ""
|
||||
},
|
||||
endWeekNum:{
|
||||
type: String,
|
||||
default: ""
|
||||
},
|
||||
xAxisData:{
|
||||
type: String,
|
||||
default: ""
|
||||
},
|
||||
},
|
||||
components: {
|
||||
scEcharts,
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
typeOptions: ["月", "年"],
|
||||
basicOption: {
|
||||
backgroundColor: "transparent",
|
||||
title: {
|
||||
text: "",
|
||||
left: 'center',
|
||||
},
|
||||
grid: {
|
||||
top: "80px",
|
||||
},
|
||||
tooltip: {
|
||||
trigger: "axis",
|
||||
show: true,
|
||||
},
|
||||
xAxis: {
|
||||
type: "category",
|
||||
data: [],
|
||||
},
|
||||
yAxis: {
|
||||
type: "value",
|
||||
},
|
||||
legend: {
|
||||
top: "10%",
|
||||
icon: "stack",
|
||||
right:'10%',
|
||||
},
|
||||
series: [
|
||||
{
|
||||
data: [0, 0, 0, 0, 0, 0, 0],
|
||||
stack: "Ad",
|
||||
type: "bar",
|
||||
barWidth: "15px",
|
||||
},
|
||||
],
|
||||
},
|
||||
tableData6: [],
|
||||
tableData7: [],
|
||||
tableData10: [],
|
||||
monthList: [
|
||||
"一月",
|
||||
"二月",
|
||||
"三月",
|
||||
"四月",
|
||||
"五月",
|
||||
"六月",
|
||||
"七月",
|
||||
"八月",
|
||||
"九月",
|
||||
"十月",
|
||||
"十一月",
|
||||
"十二月",
|
||||
],
|
||||
};
|
||||
},
|
||||
mounted() {
|
||||
this.$nextTick(() => {
|
||||
this.getData6();
|
||||
this.getData7();
|
||||
this.getData10();
|
||||
})
|
||||
},
|
||||
methods: {
|
||||
setChart(name, option = null) {
|
||||
// 根据name 渲染数据, option需填写,否则option为模拟数据
|
||||
var myChart = echarts.getInstanceByDom(
|
||||
document.getElementById(name)
|
||||
);
|
||||
if (myChart == undefined) {
|
||||
myChart = echarts.init(document.getElementById(name), "T");
|
||||
}
|
||||
if (option == null) {
|
||||
option = Object.assign({}, this.basicOption);
|
||||
}
|
||||
setTimeout(() => {
|
||||
try {
|
||||
myChart.setOption(option);
|
||||
} catch (error) {}
|
||||
}, 500);
|
||||
},
|
||||
queryTypeChange(value) {
|
||||
console.log(value);
|
||||
},
|
||||
getData6() {
|
||||
let that = this;
|
||||
let option = deepCopy(that.basicOption);
|
||||
option.xAxis.data = that.xAxisData;
|
||||
option.title.text = "6车间生产合格数统计";
|
||||
let exec = that.queryType == "月" ? "lineWeek" : "lineMonth";
|
||||
let obj = {
|
||||
query: {
|
||||
start_date: that.start_date,
|
||||
end_date: that.end_date,
|
||||
dept_name: "6车间",
|
||||
},
|
||||
};
|
||||
that.$API.bi.dataset.exec.req(exec, obj).then((res) => {
|
||||
let tableData6 = res.data2.ds0 ? res.data2.ds0 : [];
|
||||
that.tableData6 = tableData6;
|
||||
if (tableData6.length > 0) {
|
||||
option.series = [];
|
||||
let seriesData = [],
|
||||
nameList = [];
|
||||
tableData6.forEach((ite) => {
|
||||
if (nameList.indexOf(ite.物料名) > -1) {
|
||||
} else {
|
||||
nameList.push(ite.物料名);
|
||||
seriesData.push([]);
|
||||
}
|
||||
});
|
||||
if (that.queryType == "月") {
|
||||
tableData6.forEach((item) => {
|
||||
let indexX = nameList.indexOf(item.物料名);
|
||||
let indexY = item.周 - that.firstWeekNum;
|
||||
if(seriesData[indexX][indexY]){
|
||||
seriesData[indexX][indexY] += item.合格数;
|
||||
}else{
|
||||
seriesData[indexX][indexY] =0;
|
||||
seriesData[indexX][indexY] += item.合格数;
|
||||
}
|
||||
});
|
||||
} else {
|
||||
tableData6.forEach((item) => {
|
||||
let indexX = nameList.indexOf(item.物料名);
|
||||
let indexY = item.month - 1;
|
||||
if(seriesData[indexX][indexY]){
|
||||
seriesData[indexX][indexY] += item.合格数;
|
||||
}else{
|
||||
seriesData[indexX][indexY] =0;
|
||||
seriesData[indexX][indexY] += item.合格数;
|
||||
}
|
||||
});
|
||||
}
|
||||
for (let n = 0; n < seriesData.length; n++) {
|
||||
let obj = {};
|
||||
obj.name = nameList[n];
|
||||
obj.stack = "Ad";
|
||||
obj.type = "bar";
|
||||
obj.barWidth = "15px";
|
||||
obj.data = seriesData[n];
|
||||
obj.label={
|
||||
show: true,
|
||||
position: "right",
|
||||
formatter: "{c}",
|
||||
};
|
||||
option.series.push(obj);
|
||||
}
|
||||
that.setChart("bachart3", option);
|
||||
} else {
|
||||
that.setChart("bachart3", option);
|
||||
}
|
||||
});
|
||||
},
|
||||
getData7() {
|
||||
let that = this;
|
||||
let obj = {
|
||||
query: {
|
||||
start_date: that.start_date,
|
||||
end_date: that.end_date,
|
||||
dept_name: "7车间",
|
||||
},
|
||||
};
|
||||
let option = deepCopy(that.basicOption);
|
||||
option.xAxis.data = that.xAxisData;
|
||||
option.title.text = "预制棒生产合格数统计(7车间)";
|
||||
let exec = that.queryType == "月" ? "lineWeek" : "lineMonth";
|
||||
that.$API.bi.dataset.exec.req(exec, obj).then((res) => {
|
||||
console.log("7生产车间统计:", res);
|
||||
let tableData7 = res.data2.ds0 ? res.data2.ds0 : [];
|
||||
that.tableData7 = tableData7;
|
||||
debugger;
|
||||
if (tableData7.length > 0) {
|
||||
debugger;
|
||||
option.series = [];
|
||||
let seriesData = [],
|
||||
nameList = [];
|
||||
tableData7.forEach((ite) => {
|
||||
if (nameList.indexOf(ite.物料名) > -1) {
|
||||
} else {
|
||||
nameList.push(ite.物料名);
|
||||
seriesData.push([]);
|
||||
}
|
||||
});
|
||||
tableData7.forEach((item) => {
|
||||
let indexX = 0,
|
||||
indexY = 0;
|
||||
if (that.queryType == "月") {
|
||||
indexX = nameList.indexOf(item.物料名);
|
||||
indexY = item.周 - that.firstWeekNum;
|
||||
} else {
|
||||
indexX = nameList.indexOf(item.物料名);
|
||||
indexY = item.月 - 1;
|
||||
}
|
||||
if(seriesData[indexX][indexY]){
|
||||
seriesData[indexX][indexY] += item.合格数;
|
||||
}else{
|
||||
seriesData[indexX][indexY] =0;
|
||||
seriesData[indexX][indexY] += item.合格数;
|
||||
}
|
||||
});
|
||||
for (let n = 0; n < seriesData.length; n++) {
|
||||
let obj = {};
|
||||
obj.name = nameList[n];
|
||||
obj.stack = "Ad";
|
||||
obj.type = "bar";
|
||||
obj.barWidth = "15px";
|
||||
obj.data = seriesData[n];
|
||||
obj.label={
|
||||
show: true,
|
||||
position: "right",
|
||||
formatter: "{c}",
|
||||
};
|
||||
option.series.push(obj);
|
||||
}
|
||||
that.setChart("bachart1", option);
|
||||
} else {
|
||||
that.setChart("bachart1", option);
|
||||
}
|
||||
});
|
||||
},
|
||||
getData10() {
|
||||
let that = this;
|
||||
let option = deepCopy(that.basicOption);
|
||||
option.xAxis.data = that.xAxisData;
|
||||
option.title.text = "预制管生产合格数统计(10车间)";
|
||||
let obj = {
|
||||
query: {
|
||||
start_date: that.start_date,
|
||||
end_date: that.end_date,
|
||||
dept_name: "10车间",
|
||||
},
|
||||
};
|
||||
let exec = that.queryType == "月" ? "lineWeek" : "lineMonth";
|
||||
that.$API.bi.dataset.exec.req(exec, obj).then((res) => {
|
||||
// console.log('10生产车间统计:',res);
|
||||
let tableData10 = res.data2.ds0 ? res.data2.ds0 : [];
|
||||
that.tableData10 = tableData10;
|
||||
if (tableData10.length > 0) {
|
||||
option.series = [];
|
||||
let seriesData = [],
|
||||
nameList = [];
|
||||
tableData10.forEach((ite) => {
|
||||
if (nameList.indexOf(ite.物料名) > -1) {
|
||||
} else {
|
||||
nameList.push(ite.物料名);
|
||||
seriesData.push([]);
|
||||
}
|
||||
});
|
||||
tableData10.forEach((item) => {
|
||||
let indexX = 0,
|
||||
indexY = 0;
|
||||
if (that.queryType == "月") {
|
||||
indexX = nameList.indexOf(item.物料名);
|
||||
indexY = item.周 - that.firstWeekNum;
|
||||
} else {
|
||||
indexX = nameList.indexOf(item.物料名);
|
||||
indexY = item.月 - 1;
|
||||
}
|
||||
if(seriesData[indexX][indexY]){
|
||||
seriesData[indexX][indexY] += item.合格数;
|
||||
}else{
|
||||
seriesData[indexX][indexY] =0;
|
||||
seriesData[indexX][indexY] += item.合格数;
|
||||
}
|
||||
});
|
||||
for (let n = 0; n < seriesData.length; n++) {
|
||||
let obj = {};
|
||||
obj.name = nameList[n];
|
||||
obj.stack = "Ad";
|
||||
obj.type = "bar";
|
||||
obj.barWidth = "15px";
|
||||
obj.data = seriesData[n];
|
||||
option.series.push(obj);
|
||||
obj.label={
|
||||
show: true,
|
||||
position: "right",
|
||||
formatter: "{c}",
|
||||
};
|
||||
}
|
||||
that.setChart("bachart2", option);
|
||||
} else {
|
||||
that.setChart("bachart2", option);
|
||||
}
|
||||
});
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
#bachart1,
|
||||
#bachart2,
|
||||
#bachart3,
|
||||
#bachart4 {
|
||||
width: 100%;
|
||||
height: 300px;
|
||||
margin-top: 10px;
|
||||
}
|
||||
.tables {
|
||||
position: absolute;
|
||||
top: 6px;
|
||||
left: 4px;
|
||||
z-index: 10;
|
||||
}
|
||||
</style>
|
||||
|
|
@ -0,0 +1,185 @@
|
|||
<!-- 混料统计 -->
|
||||
<template>
|
||||
<div>
|
||||
<div id="bachartHL" style="width:100%;height:300px;margin-top: 10px;"></div>
|
||||
<el-table :data="dataList" class="exportTables">
|
||||
<el-table-column type="index" width="50"/>
|
||||
<el-table-column label="物料名" prop="物料名">
|
||||
</el-table-column>
|
||||
<el-table-column label="月份" prop="月" v-if="queryType == '年'">
|
||||
</el-table-column>
|
||||
<el-table-column label="周" prop="周" v-else>
|
||||
</el-table-column>
|
||||
<el-table-column label="规格" prop="规格">
|
||||
</el-table-column>
|
||||
<el-table-column label="型号" prop="型号">
|
||||
</el-table-column>
|
||||
<el-table-column label="桶数" prop="合格数">
|
||||
</el-table-column>
|
||||
<el-table-column label="总重量" prop="总重量">
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import * as echarts from "echarts";
|
||||
import T from '@/components/scEcharts/echarts-theme-T.js';
|
||||
echarts.registerTheme('T', T);
|
||||
function deepCopy(obj) {
|
||||
return JSON.parse(JSON.stringify(obj));
|
||||
}
|
||||
export default {
|
||||
name: "all_sc_hl",
|
||||
props: {
|
||||
queryType:{
|
||||
type: String,
|
||||
default: "月"
|
||||
},
|
||||
queryDate:{
|
||||
type: String,
|
||||
default: ""
|
||||
},
|
||||
start_date:{
|
||||
type: String,
|
||||
default: ""
|
||||
},
|
||||
end_date:{
|
||||
type: String,
|
||||
default: ""
|
||||
},
|
||||
firstWeekNum:{
|
||||
type: String,
|
||||
default: ""
|
||||
},
|
||||
endWeekNum:{
|
||||
type: String,
|
||||
default: ""
|
||||
},
|
||||
xAxisData:{
|
||||
type: String,
|
||||
default: ""
|
||||
},
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
typeOptions: ["月", "年"],
|
||||
dataList: [],
|
||||
xAxisOrigin:[],
|
||||
basicOption: {
|
||||
backgroundColor: 'transparent',
|
||||
title: {
|
||||
text: '混料生产桶数及重量统计',
|
||||
left: 'center',
|
||||
},
|
||||
grid: {
|
||||
top: '80px'
|
||||
},
|
||||
tooltip: {
|
||||
trigger: 'axis'
|
||||
},
|
||||
legend: {
|
||||
top: "10%",
|
||||
icon: "stack",
|
||||
right:'10%',
|
||||
},
|
||||
xAxis: {
|
||||
type: 'category',
|
||||
data: []
|
||||
},
|
||||
yAxis: {
|
||||
type: 'value'
|
||||
},
|
||||
series: [{
|
||||
data: [0, 0, 0, 0, 0, 0, 0],
|
||||
stack: 'Ad',
|
||||
type: 'bar',
|
||||
barWidth: '15px',
|
||||
}]
|
||||
},
|
||||
monthList: [
|
||||
"一月",
|
||||
"二月",
|
||||
"三月",
|
||||
"四月",
|
||||
"五月",
|
||||
"六月",
|
||||
"七月",
|
||||
"八月",
|
||||
"九月",
|
||||
"十月",
|
||||
"十一月",
|
||||
"十二月",
|
||||
],
|
||||
};
|
||||
},
|
||||
mounted() {
|
||||
this.$nextTick(() => {
|
||||
this.getDataHL();//混料数据
|
||||
})
|
||||
},
|
||||
methods: {
|
||||
setChart(name, option = null) {
|
||||
// 根据name 渲染数据, option需填写,否则option为模拟数据
|
||||
var myChart = echarts.getInstanceByDom(document.getElementById(name));
|
||||
if (myChart == undefined) {
|
||||
myChart = echarts.init(document.getElementById(name), 'T');
|
||||
}
|
||||
if (option == null) {
|
||||
option = Object.assign({}, this.basicOption)
|
||||
}
|
||||
setTimeout(() => {
|
||||
try {
|
||||
myChart.setOption(option);
|
||||
} catch (error) { }
|
||||
}, 500)
|
||||
},
|
||||
getDataHL() {
|
||||
let that = this;
|
||||
let obj = {
|
||||
query: { start_date: that.start_date, end_date: that.end_date, mgroup_name: "混料", is_count_utask: -1 },
|
||||
};
|
||||
let option = deepCopy(that.basicOption);
|
||||
option.xAxis.data = that.xAxisData;
|
||||
that.$API.bi.dataset.exec.req('lineWeek', obj).then((res) => {
|
||||
let dataList = res.data2.ds0 ? res.data2.ds0 : [];
|
||||
that.dataList = dataList;
|
||||
if (dataList.length > 0) {
|
||||
option.series = [];
|
||||
let seriesData = [], nameList = [];
|
||||
dataList.forEach(ite => {
|
||||
if (nameList.indexOf(ite.物料名) > -1) { } else {
|
||||
nameList.push(ite.物料名);
|
||||
seriesData.push([0,0,0,0,0,0,0,0,0,0,0,0])
|
||||
}
|
||||
})
|
||||
dataList.forEach(item => {
|
||||
let indexX = 0, indexY = 0;
|
||||
indexX = nameList.indexOf(item.物料名);
|
||||
indexY = item.周 - that.firstWeekNum;
|
||||
seriesData[indexX][indexY] += item.合格数;
|
||||
});
|
||||
for (let n = 0; n < seriesData.length; n++) {
|
||||
let obj = {};
|
||||
obj.name = nameList[n];
|
||||
obj.stack = 'Ad';
|
||||
obj.type = 'bar';
|
||||
obj.barWidth = '15px';
|
||||
obj.data = seriesData[n];
|
||||
obj.label={
|
||||
show: true,
|
||||
position: "right",
|
||||
formatter: "{c}",
|
||||
};
|
||||
option.series.push(obj)
|
||||
}
|
||||
that.setChart("bachartHL", option);
|
||||
} else {
|
||||
that.setChart("bachartHL", option);
|
||||
}
|
||||
});
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
<style scoped>
|
||||
</style>
|
||||
|
|
@ -0,0 +1,299 @@
|
|||
<template>
|
||||
<div>
|
||||
<scEcharts height="300px" :option="option1" style="margin-top: 10px;"></scEcharts>
|
||||
<el-table :data="tableData1" class="exportTables">
|
||||
<el-table-column type="index" width="50" />
|
||||
<el-table-column
|
||||
label="任务编号"
|
||||
prop="number"
|
||||
min-width="100px"
|
||||
>
|
||||
</el-table-column>
|
||||
<el-table-column label="计划数" prop="count">
|
||||
</el-table-column>
|
||||
<el-table-column label="完成数" prop="count_ok">
|
||||
</el-table-column>
|
||||
<el-table-column label="完成率" prop="rate">
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<scEcharts height="300px" :option="option2" style="margin-top: 10px;"></scEcharts>
|
||||
<el-table :data="tableData2" class="exportTables">
|
||||
<el-table-column type="index" width="50" />
|
||||
<el-table-column
|
||||
label="任务编号"
|
||||
prop="number"
|
||||
min-width="100px"
|
||||
>
|
||||
</el-table-column>
|
||||
<el-table-column label="计划数" prop="count">
|
||||
</el-table-column>
|
||||
<el-table-column label="完成数" prop="count_ok">
|
||||
</el-table-column>
|
||||
<el-table-column label="完成率" prop="rate">
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<scEcharts height="300px" :option="option3" style="margin-top: 10px;"></scEcharts>
|
||||
<el-table :data="tableData3" class="exportTables">
|
||||
<el-table-column type="index" width="50" />
|
||||
<el-table-column
|
||||
label="任务编号"
|
||||
prop="number"
|
||||
min-width="100px"
|
||||
>
|
||||
</el-table-column>
|
||||
<el-table-column label="计划数" prop="count">
|
||||
</el-table-column>
|
||||
<el-table-column label="完成数" prop="count_ok">
|
||||
</el-table-column>
|
||||
<el-table-column label="完成率" prop="rate">
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import scEcharts from "@/components/scEcharts";
|
||||
export default {
|
||||
name: "chart",
|
||||
components: {
|
||||
scEcharts,
|
||||
},
|
||||
props: {
|
||||
queryType:{
|
||||
type: String,
|
||||
default: "月"
|
||||
},
|
||||
queryDate:{
|
||||
type: String,
|
||||
default: ""
|
||||
},
|
||||
start_date:{
|
||||
type: String,
|
||||
default: ""
|
||||
},
|
||||
end_date:{
|
||||
type: String,
|
||||
default: ""
|
||||
},
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
tableHeight: 0,
|
||||
currentYear: "",
|
||||
currentMonth: "",
|
||||
typeOptions: ["月", "年"],
|
||||
option1: {
|
||||
title: {
|
||||
text: "7车间任务完成进度",
|
||||
left: 'center',
|
||||
},
|
||||
tooltip: {
|
||||
trigger: "item",
|
||||
},
|
||||
legend: {
|
||||
top: "3",
|
||||
right: "3%",
|
||||
},
|
||||
color: ["rgb(64,158,255)", "orange"],
|
||||
series: {
|
||||
name: "7车间完成进度",
|
||||
type: "pie",
|
||||
radius: ["40%", "70%"],
|
||||
center: ["50%", "60%"],
|
||||
label: {
|
||||
show: true,
|
||||
position: "outside",
|
||||
formatter: "{b} : {c} ({d}%)",
|
||||
},
|
||||
data: [
|
||||
{ value: 0, name: "已完成" },
|
||||
{ value: 0, name: "未完成" },
|
||||
],
|
||||
},
|
||||
},
|
||||
option2: {
|
||||
title: {
|
||||
text: "10车间任务完成进度",
|
||||
left: 'center',
|
||||
},
|
||||
tooltip: {
|
||||
trigger: "item",
|
||||
},
|
||||
legend: {
|
||||
top: "3",
|
||||
right: "3%",
|
||||
},
|
||||
color: ["rgb(64,158,255)", "orange"],
|
||||
series: {
|
||||
name: "10车间完成进度",
|
||||
type: "pie",
|
||||
radius: ["40%", "70%"],
|
||||
center: ["50%", "60%"],
|
||||
label: {
|
||||
show: true,
|
||||
position: "outside",
|
||||
formatter: "{b} : {c} ({d}%)",
|
||||
},
|
||||
data: [
|
||||
{ value: 0, name: "已完成" },
|
||||
{ value: 0, name: "未完成" },
|
||||
],
|
||||
},
|
||||
},
|
||||
option3: {
|
||||
title: {
|
||||
text: "6车间任务完成进度",
|
||||
left: 'center',
|
||||
},
|
||||
tooltip: {
|
||||
trigger: "item",
|
||||
},
|
||||
legend: {
|
||||
top: "3",
|
||||
right: "3%",
|
||||
},
|
||||
color: ["rgb(64,158,255)", "orange"],
|
||||
series: {
|
||||
name: "6车间完成进度",
|
||||
type: "pie",
|
||||
radius: ["40%", "70%"],
|
||||
center: ["50%", "60%"],
|
||||
label: {
|
||||
show: true,
|
||||
position: "outside",
|
||||
formatter: "{b} : {c} ({d}%)",
|
||||
},
|
||||
data: [
|
||||
{ value: 0, name: "已完成" },
|
||||
{ value: 0, name: "未完成" },
|
||||
],
|
||||
},
|
||||
},
|
||||
tableData1: [],
|
||||
tableData2: [],
|
||||
tableData3: [],
|
||||
};
|
||||
},
|
||||
mounted() {
|
||||
this.$nextTick(() => {
|
||||
this.getData6();
|
||||
this.getData7();
|
||||
this.getData10();
|
||||
})
|
||||
|
||||
},
|
||||
methods: {
|
||||
getData7() {
|
||||
let that = this;
|
||||
that.tableData1 = [];
|
||||
that.option1.series.data[0].value = 0;
|
||||
that.option1.series.data[1].value = 0;
|
||||
let obj = {};
|
||||
obj.page = 0;
|
||||
obj.mgroup__belong_dept__name = "7车间";
|
||||
obj.start_date__gte = that.start_date;
|
||||
obj.end_date__lte = that.end_date;
|
||||
that.$API.pm.utask.list.req(obj).then((res) => {
|
||||
console.log("utask:", res);
|
||||
let data = [];
|
||||
let count_ok1 = 0;
|
||||
let count_notok1 = 0;
|
||||
if (res.length > 0) {
|
||||
res.forEach((item) => {
|
||||
let obj = item;
|
||||
obj.rate =
|
||||
Math.round((item.count_ok / item.count) * 100) +
|
||||
"%";
|
||||
if (item.count_ok >= item.count) {
|
||||
count_ok1++;
|
||||
} else {
|
||||
count_notok1++;
|
||||
}
|
||||
data.push(obj);
|
||||
});
|
||||
that.tableData1 = data;
|
||||
that.option1.series.data[0].value = count_ok1;
|
||||
}
|
||||
this.option1.series.data[0].value = count_ok1;
|
||||
this.option1.series.data[1].value = count_notok1;
|
||||
});
|
||||
},
|
||||
async getData10() {
|
||||
let that = this;
|
||||
that.tableData2 = [];
|
||||
that.option2.series.data[0].value = 0;
|
||||
that.option2.series.data[1].value = 0;
|
||||
let obj = {};
|
||||
obj.page = 0;
|
||||
obj.mgroup__belong_dept__name = "10车间";
|
||||
obj.start_date__gte = that.start_date;
|
||||
obj.end_date__lte = that.end_date;
|
||||
await that.$API.pm.utask.list.req(obj).then((res) => {
|
||||
console.log("utask:", res);
|
||||
let data = [];
|
||||
let count_ok2 = 0;
|
||||
let count_notok2 = 0;
|
||||
if (res.length > 0) {
|
||||
res.forEach((item) => {
|
||||
let obj = item;
|
||||
obj.rate =
|
||||
Math.round((item.count_ok / item.count) * 100) +
|
||||
"%";
|
||||
if (item.count_ok >= item.count) {
|
||||
count_ok2++;
|
||||
} else {
|
||||
count_notok2++;
|
||||
}
|
||||
data.push(obj);
|
||||
});
|
||||
that.tableData2 = data;
|
||||
that.option2.series.data[0].value = count_ok2;
|
||||
that.option2.series.data[1].value = count_notok2;
|
||||
}
|
||||
});
|
||||
},
|
||||
async getData6() {
|
||||
let that = this;
|
||||
that.tableData3 = [];
|
||||
that.option3.series.data[0].value = 0;
|
||||
that.option3.series.data[1].value = 0;
|
||||
let obj = {};
|
||||
obj.page = 0;
|
||||
obj.mtask_utask__mgroup__belong_dept__name = "6车间";
|
||||
obj.start_date__gte = that.start_date;
|
||||
obj.end_date__lte = that.end_date;
|
||||
await that.$API.pm.utask.list.req(obj).then((res) => {
|
||||
console.log("utask:", res);
|
||||
let data = [];
|
||||
let count_ok3 = 0;
|
||||
let count_notok3 = 0;
|
||||
if (res.length > 0) {
|
||||
res.forEach((item) => {
|
||||
let obj = item;
|
||||
obj.rate =
|
||||
Math.round((item.count_ok / item.count) * 100) +
|
||||
"%";
|
||||
if (item.count_ok >= item.count) {
|
||||
count_ok3++;
|
||||
} else {
|
||||
count_notok3++;
|
||||
}
|
||||
data.push(obj);
|
||||
});
|
||||
that.tableData3 = data;
|
||||
that.option3.series.data[0].value = count_ok3;
|
||||
that.option3.series.data[1].value = count_notok3;
|
||||
}
|
||||
});
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.tables {
|
||||
position: absolute;
|
||||
top: 6px;
|
||||
left: 4px;
|
||||
z-index: 10;
|
||||
}
|
||||
</style>
|
||||
|
|
@ -0,0 +1,83 @@
|
|||
<template>
|
||||
<div>
|
||||
<p style="font-size: 18px;font-weight: 600;text-align: center;margin: 10px;">销售统计</p>
|
||||
<scTable class="exportTables" :data="tableData2" hideDo hidePagination>
|
||||
<el-table-column type="index" width="50" />
|
||||
<el-table-column label="年份" prop="年" width="80"/>
|
||||
<el-table-column v-if="queryType == '月'" width="50" label="周" prop="周"/>
|
||||
<el-table-column v-else width="50" label="月份" prop="月"/>
|
||||
<el-table-column label="名称" prop="物料名">
|
||||
</el-table-column>
|
||||
<el-table-column label="规格" prop="规格">
|
||||
</el-table-column>
|
||||
<el-table-column label="型号" prop="型号">
|
||||
</el-table-column>
|
||||
<el-table-column label="数量" prop="数量">
|
||||
</el-table-column>
|
||||
</scTable>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: "all_xs",
|
||||
props: {
|
||||
queryType:{
|
||||
type: String,
|
||||
default: "月"
|
||||
},
|
||||
queryDate:{
|
||||
type: String,
|
||||
default: ""
|
||||
},
|
||||
start_date:{
|
||||
type: String,
|
||||
default: ""
|
||||
},
|
||||
end_date:{
|
||||
type: String,
|
||||
default: ""
|
||||
},
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
typeOptions: ["月", "年"],
|
||||
tableData2: [],
|
||||
};
|
||||
},
|
||||
mounted() {
|
||||
this.$nextTick(() => {
|
||||
this.getTable();
|
||||
})
|
||||
},
|
||||
methods: {
|
||||
getTable() {
|
||||
let that = this;
|
||||
let obj = {
|
||||
query: {
|
||||
start_date: that.start_date,
|
||||
end_date: that.end_date,
|
||||
mio_type: "sale_out",
|
||||
},
|
||||
};
|
||||
let exec = that.queryType == "月" ? "saleOutWeek" : "saleOutMonth";
|
||||
that.$API.bi.dataset.exec.req(exec, obj).then((res) => {
|
||||
that.tableData2 = [];
|
||||
if (res.data2.ds0) {
|
||||
let data = res.data2.ds0;
|
||||
that.tableData2 = data;
|
||||
}
|
||||
});
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.tables {
|
||||
position: absolute;
|
||||
top: 4px;
|
||||
right: 6px;
|
||||
z-index: 10;
|
||||
}
|
||||
</style>
|
||||
Loading…
Reference in New Issue