Merge remote-tracking branch 'origin/master'

master
mengjiao 8 months ago
commit 1d370ce272

@ -170,7 +170,6 @@ export function getIncomeChartList(query) {
}
//定量值明细报表
export function getDLTableMXTitle(query) {
return request({
url: '/quality/staticTable/getDLTableMXTitle',
@ -184,4 +183,28 @@ export function getDLTableMXList(query) {
method: 'get',
params: query
});
}
export function getProdLineList() {
return request({
url: '/quality/staticTable/getProdLineList',
method: 'get',
params: {}
});
}
//CPK统计报表
export function getTableCPKTitle(query) {
return request({
url: '/quality/staticTable/getTableCPKTitle',
method: 'get',
params: query
});
}
export function getTableCPKList(query) {
return request({
url: '/quality/staticTable/getTableCPKList',
method: 'get',
params: query
});
}

@ -130,7 +130,7 @@
<el-table-column label="产品编码" align="center" prop="productCode" width="180" :formatter="productCodeFormate"/>
<el-table-column label="产品名称" align="center" prop="productName" width="350" />
<el-table-column label="标准用人" align="center" prop="useMan" width="100"/>
<el-table-column label="标准效率" align="center" prop="efficiency" width="100"/>
<el-table-column label="标准效率(件)" align="center" prop="efficiency" width="100"/>
<el-table-column label="标准效率(PC/小时)" align="center" prop="hourEfficiency" width="120"/>
<el-table-column label="标准工时" align="center" prop="attr1" width="100"/>
<!--<el-table-column label="产品列表" align="left" prop="productList" :formatter="formatProductNames" :show-overflow-tooltip="true"/>-->
@ -204,7 +204,7 @@
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="标准效率" prop="efficiency">
<el-form-item label="标准效率(件)" prop="efficiency">
<el-input v-model="form.efficiency" type="number" placeholder="请输入标准效率" />
</el-form-item>
</el-col>

@ -1,7 +1,7 @@
<template>
<div class="app-container">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch"
label-width="68px">
label-width="100px">
<el-form-item label="检验类型" prop="typeCode">
<el-select
v-model="queryParams.typeCode"
@ -31,7 +31,7 @@
></el-option>
</el-select>
</el-form-item>
<el-form-item label="物料号" prop="materialCode">
<el-form-item label="CPK品类编码" prop="materialCode">
<el-input
v-model="queryParams.materialCode"
placeholder="请输入物料号"
@ -39,7 +39,7 @@
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="物料名称" prop="materialName">
<el-form-item label="CPK品类名称" prop="materialName">
<el-input
v-model="queryParams.materialName"
placeholder="请输入物料名称"
@ -117,8 +117,8 @@
<el-table v-loading="loading" :data="updownList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center"/>
<el-table-column label="物料号" width="150" align="center" prop="materialCode" :formatter="productCodeFormate"/>
<el-table-column label="物料名称" align="center" prop="materialName"/>
<el-table-column label="CPK品类编码" width="150" align="center" prop="materialCode"/>
<el-table-column label="CPK品类名称" align="center" prop="materialName"/>
<el-table-column label="检验类型" width="140" align="center" prop="typeCode">
<template slot-scope="scope">
<dict-tag :options="dict.type.check_type" :value="scope.row.typeCode"/>
@ -142,7 +142,7 @@
<!-- 添加或修改物料CPK上下限维护对话框 -->
<el-dialog :title="title" :visible.sync="open" width="800px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="100px">
<el-form ref="form" :model="form" :rules="rules" label-width="130px">
<el-row :gutter="10">
<el-col :span="12">
<el-form-item label="检验类型" prop="typeCode">
@ -181,17 +181,32 @@
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="物料号" prop="materialCode">
<el-form-item label="CPK品类编码" prop="materialCode">
<!--
<el-input v-model="form.materialCode" placeholder="请输入物料号">
<el-button slot="append" @click="handleSelectProduct" icon="el-icon-search"></el-button>
</el-input>
-->
<el-select
v-model="form.materialCode"
placeholder="请选择CPK品类"
style="width:100%"
>
<el-option
v-for="dict in dict.type.qms_category"
:key="dict.value"
:label="dict.label"
:value="dict.value"
></el-option>
</el-select>
</el-form-item>
</el-col>
<!--
<el-col :span="12">
<el-form-item label="物料名称" prop="materialName">
<el-form-item label="CPK品类名称" prop="materialName">
<el-input v-model="form.materialName" placeholder="请输入物料名称" disabled/>
</el-form-item>
</el-col>
</el-col>-->
<el-col :span="12">
<el-form-item label="选择检测项" prop="ruleCode">
<el-select
@ -248,7 +263,7 @@ import ItemSelectMaterial from "@/views/quality/cpkUpDowConfig/selectMaterial";
import {getCheckTypeList,getProjectOptionList} from "@/api/quality/qcTable";
export default {
name: "Updown",
dicts: ["check_type"],
dicts: ["check_type","qms_category"],
components: {ItemSelectMaterial},
data() {
return {
@ -290,7 +305,7 @@ import {getCheckTypeList,getProjectOptionList} from "@/api/quality/qcTable";
rules: {
typeCode: [{ required: true, message: "检验类型", trigger: "blur" }],
checkType: [{ required: true, message: "检验节点", trigger: "blur" }],
materialCode: [{ required: true, message: "物料名称", trigger: "blur" }],
materialCode: [{ required: true, message: "CPK品类名称", trigger: "blur" }],
ruleName: [{ required: true, message: "检测项名称", trigger: "blur" }],
}
};
@ -373,6 +388,11 @@ import {getCheckTypeList,getProjectOptionList} from "@/api/quality/qcTable";
submitForm() {
this.$refs["form"].validate(valid => {
if (valid) {
let options0 = this.dict.type.qms_category;
const selectedOptionObj = options0.find(option => option.value === this.form.materialCode);
this.form.materialName = selectedOptionObj ? selectedOptionObj.label : '';
if (this.form.id != null) {
updateCpkUpdown(this.form).then(response => {
this.$modal.msgSuccess("修改成功");
@ -417,8 +437,11 @@ import {getCheckTypeList,getProjectOptionList} from "@/api/quality/qcTable";
}
},
//
handleSelectProduct() {
this.$refs.itemSelectMaterial.showFlag = true;
handleSelectProduct(val) {
//this.$refs.itemSelectMaterial.showFlag = true;
let options0 = this.dict.type.qms_category;
const selectedOptionObj = options0.find(option => option.value === val);
this.form.materialName = selectedOptionObj ? selectedOptionObj.label : '';
},
//
onSelectMaterial(obj) {

@ -149,6 +149,9 @@
<h2 v-if='form.orderType=="bp"'>白坯检验报告</h2>
<h2 v-else></h2>
</el-col>
<el-col :offset="1" :span="5" class="center-text">
<span style="font-size: 14px;padding: 6px;line-height: 50px;">编码{{form.fileNo}}</span>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
@ -508,7 +511,8 @@ export default {
this.queryParams.recordId = recordId;
getIncome(recordId).then(response => {
this.form = response.data;
let mcode = this.form.materialCode;
this.form.materialCode = mcode.slice(7, 18);
//let checkedValues0 =[];
//checkedValues0.push(response.data.checkResult)
//this.form.checkedValues = checkedValues0;

@ -147,6 +147,9 @@
<el-col :offset="8" :span="8" class="center-text">
<h2>库存检验报告</h2>
</el-col>
<el-col :offset="1" :span="5" class="center-text">
<span style="font-size: 14px;padding: 6px;line-height: 50px;">编码{{form.fileNo}}</span>
</el-col>
</el-row>
<el-row>
<el-col :span="8">

@ -59,7 +59,7 @@
<div class="title">来料数据统计</div>
<el-table :data="tableTbody" height="440" :loading="loading" ref="tables">
<el-table-column label="时间" align="center" prop="timeCol" min-width="100" fixed="left" />
<el-table-column label="抽样数" align="center" prop="sampleQuality" min-width="100" fixed/>
<el-table-column label="抽检批次" align="center" prop="sampleQuality" min-width="100" fixed/>
<el-table-column label="缺陷不良" align="center" min-width="100">
<template v-for="(column, index) in tableThead">
<el-table-column align="center" :prop="'col'+index" :key="index" :label="column"/>
@ -83,7 +83,7 @@
<div class="title">来料</div>
<el-table :data="tableBlfx" height="400">
<el-table-column label="时间" align="center" prop="dataType" min-width="100" />
<el-table-column label="抽样数" align="center" prop="noOkQuality" min-width="100"/>
<el-table-column label="抽检批次" align="center" prop="noOkQuality" min-width="100"/>
<el-table-column label="不良率" align="center" prop="noOkNumRate" min-width="100">
<template slot-scope="scope">
<span>{{scope.row.noOkNumRate}}%</span>

@ -168,7 +168,7 @@
<span style="font-size: 18px;padding: 6px;">产品巡检记录表</span>
</el-col>
<el-col :offset="4" :span="4" class="center-text">
<span style="font-size: 14px;padding: 6px;">检验依据{{form.standardNo}}</span>
<span style="font-size: 14px;padding: 6px;">编码{{form.fileNo}}</span>
</el-col>
</el-row>
<!-- 导航栏 -->
@ -583,13 +583,15 @@
</el-col>
</el-row>
<el-row>
<el-col :offset="16" :span="8">
<el-form-item label="检验标准" prop="standardNo">
<span>{{ form.standardNo }}</span>
</el-form-item>
<!--<el-form-item label="检验标准" :prop="this.standardNo">
<el-col :offset="8" :span="8">
<el-form-item label="检验标准" :prop="this.standardNo">
<span>{{ this.standardNo }}</span>
</el-form-item>-->
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="编码" :prop="form.fileNo">
<span>{{ form.fileNo }}</span>
</el-form-item>
</el-col>
</el-row>
<el-row>
@ -1055,7 +1057,7 @@ export default {
this.checkProjectList = response.rows;
this.total = response.total;
this.loading = false;
//this.standardNo = this.checkProjectList[0].standardNo;
this.standardNo = this.checkProjectList[0].standardNo;
this.rowspan()
});
},

@ -137,6 +137,9 @@
<el-col class="center-text">
<h2>成品检验报告</h2>
</el-col>
<el-col :offset="18" :span="5" class="center-text">
<span style="font-size: 14px;padding: 6px;">编码{{form.fileNo}}</span>
</el-col>
</el-row>
<el-descriptions title="" border :column="3" :contentStyle="content_style" :label-style="label_style">
<el-descriptions-item label="产品名称" class="my-description-item1">{{form.materialName}}</el-descriptions-item>
@ -148,7 +151,7 @@
<el-descriptions-item label="报检日期" class="my-description-item3">{{form.createTime}}</el-descriptions-item>
<el-descriptions-item label="生产批号" class="my-description-item1">{{form.incomeBatchNo}}</el-descriptions-item>
<el-descriptions-item label="检验依据" class="my-description-item2">{{form.standardNo}}</el-descriptions-item>
<el-descriptions-item label="检验依据" class="my-description-item2">{{form.fileNo}}</el-descriptions-item>
<el-descriptions-item label="检验日期" class="my-description-item3">{{form.checkTime}}</el-descriptions-item>
</el-descriptions>
<el-row class="border-row">

@ -0,0 +1,473 @@
<template>
<div class="app-container">
<el-form
:model="queryParams"
ref="queryForm"
size="small"
:inline="true"
v-show="showSearch"
label-width="100px"
class="edit-el-form"
>
<el-form-item label="报表类型" prop="tableType">
<el-select clearable v-model="queryParams.tableType" @change="changeYM">
<el-option
v-for="item in tableTypeList"
:key="item.value"
:label="item.lable"
:value="item.value"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="生产时间" prop="incomeTimeArray">
<el-date-picker
v-model="queryParams.incomeTimeArray"
format="yyyy-MM"
type="monthrange"
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期"
v-if = "ym"
/>
<el-date-picker
v-model="queryParams.incomeTimeArray"
format="yyyy-MM-dd"
type="daterange"
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期"
v-if = "!ym"
/>
</el-form-item>
<el-form-item label="线体" prop="checkLoc">
<el-select clearable v-model="queryParams.checkLoc">
<el-option
v-for="item in prodLineList"
:key="item.lineCode"
:label="item.lineName"
:value="item.lineCode"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="CPK品类" prop="cpkType">
<el-select
v-model="queryParams.cpkType"
placeholder="请选择品类"
>
<el-option
v-for="dict in dict.type.qms_category"
:key="dict.value"
:label="dict.label"
:value="dict.value"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="检验类型" prop="typeCode">
<el-select
v-model="queryParams.typeCode"
placeholder="必选检验类型"
@change="getCheckTypeList"
>
<el-option
v-for="dict in dict.type.check_type"
:key="dict.value"
:label="dict.label"
:value="dict.value"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="检验节点" prop="checkType">
<el-select
v-model="queryParams.checkType"
placeholder="必选检验节点"
@change="getProjectListFunc"
>
<el-option
v-for="dict in checkTypeList"
:key="dict.checkType"
:label="dict.checkName"
:value="dict.checkType"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="定量检测项" prop="projectId">
<el-select
v-model="queryParams.projectId"
filterable
collapse-tags
placeholder="必选定量检测项"
>
<el-option
v-for="item in projectNoOptions"
:key="item.recordId"
:label="item.ruleName"
:value="item.recordId"
></el-option>
</el-select>
</el-form-item>
<el-form-item>
<el-button
type="primary"
icon="el-icon-search"
size="mini"
@click="handleQuery"
>搜索</el-button
>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery"></el-button>
<el-button icon="el-icon-download" size="mini" @click="handleExport" type="warning">导出</el-button>
</el-form-item>
</el-form>
<el-tabs v-model="activeName" @tab-click="handleClick" style="height:400px;overflow-y: auro;">
<el-tab-pane label="报表数据" name="first" >
<el-table v-loading="loading" :data="tableList" height="400">
<el-table-column type="selection" width="55" align="center" />
<el-table-column type="index" width="50" align="center" :index="indexMethod" label="序号"/>
<el-table-column label="CPK品类" align="center" prop="cpkTypeName" width="100" />
<template v-for="(column, index) in showTitles">
<el-table-column align="center" width="100" :prop="column.id" :key="column.id" :label="column.titleName"/>
</template>
<el-table-column label="平均值" align="center" prop="cpkAvg" width="100" />
</el-table>
<!--
<pagination
v-show="total > 0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>-->
</el-tab-pane>
<el-tab-pane label="折线图分析" name="second">
<div id="echartsCPK" style="width:1200px;height:390px;"></div>
</el-tab-pane>
</el-tabs>
</div>
</template>
<script>
import {
getTableCPKTitle,getTableCPKList,
getDLTableMXList,
getCheckTypeList,
getProjectOptionList,
getProdLineList
} from "@/api/quality/qcTable";
import * as echarts from "echarts";
import moment from "moment/moment";
export default {
name: "QcTableCPK",
dicts: ["check_type","qms_category"],
data() {
return {
prodLineList:[],
activeName:'first',
detailListLoading: true,
refreshNewWorkerTable: true,
//
selectPrepare: [],
tableTypeList: [{value:"mm",lable:"月报"},{value:"day",lable:"日报"}],
//
formRef: "form",
validateRules: [],
printDialogVisible: false,
//
loading: true,
//
ids: [],
//
single: true,
//
multiple: true,
//
showSearch: true,
//
total: 0,
//
tableList: [],
showTitles:[],
xData:[],
detailTitleCol2: [],
//
title: "",
//
open: false,
ym:true,
//
queryParams: {
pageNum: 1,
pageSize: 10,
checkNo: null,
typeCode: null,
checkType: null,
orderNo: null,
productId: null,
materialCode: null,
prodType: null,
materialName: null,
productSpc: null,
wetDetailPlanId: null,
incomeTime: null,
incomeBatchNo: null,
incomeTimeArray: [],
ymArrayStart: null,
ymArrayEnd: null,
cpkType:"cate1",
tableType:"mm"
},
workCenterList: [],
checkTypeList: [],
projectNoOptions: [],
//
form: {},
//
rules: {},
openReport: false,
titleReport: "工单报工详情",
legenddata: [],
seriesdata: [],
xAxisdata: [],
detailechartslist: [],
titledata: "",
};
},
created() {
getProdLineList().then(response => {
this.prodLineList = response
})
this.getDate();
this.getList();
},
methods: {
/**获取默认查询时间段**/
getDate() {
let start = this.Fungetdate(0);
let end = this.Fungetdate(0);
this.queryParams.incomeTimeArray.push(start, end);
},
Fungetdate(num) {
var dd = new Date();
dd.setDate(dd.getDate() + num);
var y = dd.getFullYear();
var m = dd.getMonth() + 1; //
var d = dd.getDate();
return y + "-" + m ;
},
/**获取车间数据**/
getWorkCenterList() {
getWorkcenterList(this.queryParams).then((response) => {
this.workCenterList = response;
});
},
getCheckTypeList(val) {
//
getCheckTypeList(val).then((response) => {
this.checkTypeList = response;
});
},
//
getProjectListFunc(val) {
getProjectOptionList(val).then((response) => {
this.projectNoOptions = response;
});
},
changeYM(val) {
if(val == 'mm'){
this.ym = true;
}else{
this.ym = false;
}
},
indexMethod(index) {
return index + 1;
},
/** 查询列表 */
getList() {
this.loading = true;
if (this.queryParams.incomeTimeArray.length > 0) {
if(this.ym){
this.queryParams.ymArrayStart = moment(this.queryParams.incomeTimeArray[0]).format("YYYY-MM");
this.queryParams.ymArrayEnd = moment(this.queryParams.incomeTimeArray[1]).format("YYYY-MM");
}else{
this.queryParams.ymArrayStart = moment(this.queryParams.incomeTimeArray[0]).format("YYYY-MM-DD");
this.queryParams.ymArrayEnd = moment(this.queryParams.incomeTimeArray[1]).format("YYYY-MM-DD");
}
}
getTableCPKTitle(this.queryParams).then((response) => {
this.showTitles = [];
//echart
this.xData= response.titleCol1;
let col1 = response.titleCol1;
if(col1 != null){
for (let i = 1; i <= col1.length; i++) {
var titleobj1 = {};
titleobj1.id = "date" + i;
titleobj1.titleName = col1[i-1];
this.showTitles.push(titleobj1);
}
}
getTableCPKList(this.queryParams);
});
getTableCPKList(this.queryParams).then((response) => {
this.tableList = response.tableData;
this.loading = false;
//echart
let yData= response.echartData;
this.getEchartCPK(this.xData,yData);
});
},
//
cancel() {
this.open = false;
this.openReport = false;
this.reset();
},
//
reset() {
this.form = {
prepareId: null,
checkNo: null,
workorderName: null,
parentOrder: null,
orderId: null,
orderNo: null,
productId: null,
materialCode: null,
prodType: null,
materialName: null,
productSpc: null,
wetDetailPlanId: null,
incomeTime: null,
incomeBatchNo: null,
createBy: null,
createTime: null,
updateBy: null,
updateTime: null,
factoryCode: null,
};
this.resetForm("form");
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.resetForm("queryForm");
this.getDate();
this.handleQuery();
},
//
handleSelectionChange(selection) {
this.ids = selection.map((item) => item.prepareId);
this.single = selection.length !== 1;
this.multiple = !selection.length;
this.selectPrepare = selection;
},
/** 导出按钮操作 */
handleExport() {
this.download(
"quality/staticTable/exportCPKList",
{
...this.queryParams,
},
`CPK_${new Date().getTime()}.xlsx`
);
},
//
cancel() {
this.open = false;
},
getEchartCPK(xData,yData){
var _this=this
var chartDomj = document.getElementById('echartsCPK');
var myChartj = echarts.init(chartDomj);
var optionj;
optionj = {
grid: {
y: '5%',
x:'1%',
y2: '6%',
x2: '1%',
width:'96%',
containLabel: true
},
legend: {
data: ['Email', 'Union Ads', 'Video Ads', 'Direct', 'Search Engine']
},
xAxis: {
type: 'category',
//name:_this.tableType=='dd'?'':_this.tableType=='mm'?'':'',
splitLine: {
show: true //线
},
axisTick:{
show:false,
inside:true,
},
axisLabel:{
rotate: _this.queryParams.tableType=='mm'?0:50,
fontSize:11
},
data: xData
},
yAxis: {
type: 'value',
show:true,
axisLine:{
},
axisLabel:{
formatter:'{value}'
}
},
series: yData
};
optionj && myChartj.setOption(optionj);
},
},
};
</script>
<style>
.my-print-head {
margin-top: 20px;
font-weight: bold;
}
.my-print-nav {
margin-top: 15px;
margin-bottom: 15px;
}
.my-print-table {
}
.my-print-foot {
margin-top: 20px;
}
#.el-table .cell {
white-space: pre-line !important;
}
.el-table .cell.el-tooltip {
white-space: pre-wrap; /*这是重点。文本换行*/
}
/deep/ .el-table__expand-icon {
display: none;
}
.expandClass .el-table__expand-icon {
display: none;
}
</style>

@ -182,14 +182,12 @@ import {
getCheckTypeList,
getSupplierList,
getProjectOptionList,
} from "@/api/quality/qcTable";
import {
getProdLineList
} from '@/api/plan/workorder'
} from "@/api/quality/qcTable";
import * as echarts from "echarts";
import moment from "moment/moment";
export default {
name: "qcTableDLReport",
name: "QcTableDLReport",
dicts: ["check_type"],
data() {
return {

Loading…
Cancel
Save