yudao-dev/src/views/report/productionYearReport/index.vue
‘937886381’ 83fc835c51 质量管理
2023-12-15 16:27:30 +08:00

460 lines
15 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!--
* @Author: zhp
* @Date: 2023-12-12 13:45:25
* @LastEditTime: 2023-12-14 14:56:45
* @LastEditors: zhp
* @Description:
-->
<template>
<div class="app-container">
<el-form :inline="true" :model="dataForm" class="demo-form-inline">
<el-form-item>
<el-date-picker style='width:170px;' v-model="yearValue1" type="year" :picker-options="pickerOptions"
value-format="timestamp" placeholder="选择年" @change="startYear" size="small" :clearable="false">
</el-date-picker>-
<el-date-picker style='width:170px;' v-model="yearValue2" type="year" :picker-options="pickerOptions"
value-format="timestamp" placeholder="选择年" @change="endYear" size="small" :clearable="false">
</el-date-picker>
</el-form-item>
<el-button type="primary" @click="getDataList()">查询</el-button>
<el-button type="primary" icon="el-icon-edit-outline" @click="editDataList()">编辑</el-button>
<el-button v-if="isSave" type="success" @click="saveDataList()">保存</el-button>
</el-form>
<el-table :data="list" style="width: 100%" :header-cell-style="{
background: '#F2F4F9',
color: '#606266'
}">
<el-table-column :label="'许昌安彩月成品生产汇总' + timeTips" align="center">
<el-table-column prop="lineId" label="生产线">
<template slot-scope="scope">
<el-input v-if="scope.row.det === true" v-model="scope.row.lineId" :disabled="disabled"></el-input>
<span v-else>{{ scope.row.lineId }} </span>
</template>
</el-table-column>
<el-table-column label="投入数㎡">
<el-table-column prop="inputNow" label="本周">
<template slot-scope="scope">
<el-input v-if="scope.row.det === true" v-model="scope.row.inputNow" :disabled="disabled"></el-input>
<span v-else>{{ scope.row.inputNow }} </span>
</template>
</el-table-column>
<el-table-column prop="inputHis" label="上周">
<template slot-scope="scope">
<el-input v-if="scope.row.det === true" v-model="scope.row.inputHis" :disabled="disabled"></el-input>
<span v-else>{{ scope.row.inputHis }} </span>
</template>
</el-table-column>
<el-table-column prop="inputTrend" label="增减">
<template slot-scope="scope">
<el-input v-if="scope.row.det === true" v-model="scope.row.inputTrend" :disabled="disabled"></el-input>
<span v-else>{{ scope.row.inputTrend }} </span>
</template>
</el-table-column>
</el-table-column>
<el-table-column label="完成良品产量">
<el-table-column prop="goodProductNow" label="本周">
<template slot-scope="scope">
<el-input v-if="scope.row.det === true" v-model="scope.row.goodProductNow" :disabled="disabled">
</el-input>
<span v-else>{{ scope.row.goodProductNow }} </span>
</template>
</el-table-column>
<el-table-column prop="goodProductHis" label="上周">
<template slot-scope="scope">
<el-input v-if="scope.row.det === true" v-model="scope.row.goodProductHis" :disabled="disabled">
</el-input>
<span v-else>{{ scope.row.goodProductHis }} </span>
</template>
</el-table-column>
<el-table-column prop="goodProductTrend" label="增减">
<template slot-scope="scope">
<el-input v-if="scope.row.det === true" v-model="scope.row.goodProductTrend" :disabled="disabled">
</el-input>
<span v-else>{{ scope.row.goodProductTrend }} </span>
</template>
</el-table-column>
</el-table-column>
<el-table-column label="原片漏检率">
<el-table-column prop="missCheckNow" label="本周">
<template slot-scope="scope">
<el-input v-if="scope.row.det === true" v-model="scope.row.missCheckNow" :disabled="disabled"></el-input>
<span v-else>{{ scope.row.missCheckNow }} </span>
</template>
</el-table-column>
<el-table-column prop="missCheckHis" label="上周">
<template slot-scope="scope">
<el-input v-if="scope.row.det === true" v-model="scope.row.missCheckHis" :disabled="disabled"></el-input>
<span v-else>{{ scope.row.missCheckHis }} </span>
</template>
</el-table-column>
<el-table-column prop="missCheckTrend" label="增减">
<template slot-scope="scope">
<el-input v-if="scope.row.det === true" v-model="scope.row.missCheckTrend" :disabled="disabled">
</el-input>
<span v-else>{{ scope.row.missCheckTrend }} </span>
</template>
</el-table-column>
</el-table-column>
<el-table-column label="综合良品率">
<el-table-column prop="goodProductPassNow" label="本周">
<template slot-scope="scope">
<el-input v-if="scope.row.det === true" v-model="scope.row.goodProductPassNow" :disabled="disabled">
</el-input>
<span v-else>{{ scope.row.goodProductPassNow }} </span>
</template>
</el-table-column>
<el-table-column prop="goodProductPassHis" label="上周">
<template slot-scope="scope">
<el-input v-if="scope.row.det === true" v-model="scope.row.goodProductPassHis" :disabled="disabled">
</el-input>
<span v-else>{{ scope.row.goodProductPassHis }} </span>
</template>
</el-table-column>
<el-table-column prop="goodProductPassTrend" label="增减">
<template slot-scope="scope">
<el-input v-if="scope.row.det === true" v-model="scope.row.goodProductPassTrend" :disabled="disabled">
</el-input>
<span v-else>{{ scope.row.goodProductPassTrend }} </span>
</template>
</el-table-column>
</el-table-column>
</el-table-column>
<div style="height: 50px;" class="remark" slot="append">
<h3 style="float: left;text-align: center;margin-left: 20px;">备注</h3>
<el-input :disabled="disabled" style="float:right;width: 96%;margin-top: 8px;" v-model="remark"></el-input>
</div>
</el-table>
<!-- 搜索工作栏 -->
<!-- <SearchBar :formConfigs="searchBarFormConfig" ref="search-bar" @headBtnClick="handleSearchBarBtnClick" /> -->
<!-- 列表 -->
<!-- <base-table :table-props="tableProps" :page="1" :limit="10" :summary-method="getSummaries" show-summary
:table-data="list">
</base-table> -->
<!-- 分页组件 -->
<!-- <pagination
v-show="total > 0"
:total="total"
:page.sync="queryParams.pageNo"
:limit.sync="queryParams.pageSize"
@pagination="getList" /> -->
</div>
</template>
<script>
import {
getProductionDataList,
updateProductionDataList,
updateSumProductionDataList
} from '@/api/report/production';
// import Editor from '@/components/Editor';
import moment from 'moment';
// import DialogForm from './dialogForm.vue';
// import basicPageMixin from '@/mixins/lb/basicPageMixin';
const tableProps = [
{
// width: 128,
prop: 'lineId',
label: '生产线',
},
{
// width: 128,
prop: '',
label: '投入数㎡',
align: 'center',
children: [
{
prop: 'inputNow',
label: '本周'
},
{
prop: 'inputHis',
label: '上周'
},
{
prop: 'inputTrend',
label: '增减'
}
]
},
{
// width: 128,
prop: '',
label: '完成良品产量',
align: 'center',
children: [
{
prop: 'goodProductNow',
label: '本周'
},
{
prop: 'goodProductHis',
label: '上周'
},
{
prop: 'goodProductTrend',
label: '增减'
}
]
},
{
// width: 128,
prop: '',
label: '原片漏检率',
align: 'center',
children: [
{
prop: 'missCheckNow',
label: '本周'
},
{
prop: 'missCheckHis',
label: '上周'
},
{
prop: 'missCheckTrend',
label: '增减'
}
]
},
{
// width: 128,
prop: '',
label: '综合良品率',
align: 'center',
children: [
{
prop: 'goodProductPassNow',
label: '本周'
},
{
prop: 'goodProductPassHis',
label: '上周'
},
{
prop: 'goodProductPassTrend',
label: '增减'
}
]
},
];
export default {
name: 'statisticalData',
// components: {
// DialogForm,
// },
// mixins: [basicPageMixin],
data() {
return {
list: [],
remark: '',
timeTips:'',
yearValue1: null,//最多10年
yearValue2: null,
// dynamicProps: [],
tableProps,
dataForm: {
// workOrderIdList:undefined,
// productionId: undefined,
// startTime: undefined,
// endTime: undefined,
reportTime: [],
reportType: 5
// productionLineId: null,
},
// dataForm: {
// reportTime:undefined
// },
isSave:false,
disabled: true,
sumArr: [],
pickerOptions: {
disabledDate(date) {
return date.getTime() > Date.now()
}
},
searchBarFormConfig: [
// {
// type: 'select',
// label: '工单名称',
// placeholder: '请选择工单名称',
// param: 'workOrderIdList',
// selectOptions: [],
// multiple: true,
// labelField: 'name',
// valueField: 'id',
// defaultSelect: []
// },
// {
// type: 'select',
// label: '产品',
// placeholder: '请选择产品',
// param: 'productionId',
// selectOptions: [],
// },
// {
// type: 'input',
// label: '检测内容',
// placeholder: '请输入检测内容',
// param: 'inspectionDetContent',
// },
{
type: 'datePicker',
label: '时间段',
dateType: 'daterange', // datetimerange
// format: 'yyyy-MM-dd HH:mm:ss',
format: 'yyyy-MM-dd HH:mm:ss',
valueFormat: 'yyyy-MM-dd HH:mm:ss',
rangeSeparator: '-',
startPlaceholder: '开始日期',
endPlaceholder: '结束日期',
defaultTime: ['00:00:00', '23:59:59'],
param: 'checkTime',
// width: 350,
},
{
type: 'button',
btnName: '查询',
name: 'search',
color: 'primary',
},
// {
// type: this.$auth.hasPermi(
// 'base:quality-inspection-record:create'
// )
// ? 'button'
// : '',
// btnName: '新增',
// name: 'add',
// plain: true,
// color: 'success',
// },
],
};
},
created() {
// this.getProductLineList();
},
mounted() {
// if (this.$route.params.startTime && this.$route.params.endTime) {
// this.searchBarFormConfig[0].defaultSelect = [
// this.$route.params.startTime,
// this.$route.params.endTime,
// ];
// this.queryParams.param = {};
// this.$set(
// this.queryParams.param,
// 'startTime',
// this.$route.params.startTime
// );
// this.$set(this.queryParams.param, 'endTime', this.$route.params.endTime);
// } else {
// this.searchBarFormConfig[0].defaultSelect = [];
// }
this.getDataList()
},
methods: {
startYear() {
if (this.yearValue2 && this.yearValue2 < this.yearValue1) {
this.$modal.msgError('开始时间不能晚于结束时间,请重新选择')
this.yearValue1 = null
return false
}
if (this.yearValue1 && this.yearValue2) {
if (this.yearValue2 - this.yearValue1 > 10 * 365 * 24 * 3600000) {
this.$modal.msgError('最大时间范围为10年请重新选择')
this.yearValue1 = null
return false
}
}
},
endYear() {
if (this.yearValue2 && this.yearValue2 < this.yearValue1) {
this.$modal.msgError('结束时间不能早于开始时间,请重新选择')
this.yearValue2 = null
return false
}
if (this.yearValue1 && this.yearValue2) {
if (this.yearValue2 - this.yearValue1 > 10 * 365 * 24 * 3600000) {
this.$modal.msgError('最大时间范围为10年请重新选择')
this.yearValue2 = null
return false
}
}
},
editDataList() {
this.disabled = false
this.isSave = true
},
async saveDataList() {
let obj = {}
this.list.forEach((ele, index) => {
if (ele.det === false) {
this.list[index].lineId = ''
this.list[index].remark = this.remark
obj = ele
this.list.splice(index,1)
}
})
let updateArr = this.list
// console.log(JSON.stringify(updateArr[1]))
const result = await Promise.all([
await updateSumProductionDataList(obj),
await updateProductionDataList(updateArr),
]);
if (result[0].data == true && result[1].data == true) {
// console.log(res)
this.disabled = true
this.isSave = false
this.getDataList()
} else {
this.$modal.msgError('更新失败');
}
},
transformYear(timeStamp) {// 本年最后一天
let year = moment(timeStamp).format('YYYY')
let newData = year + '-12-31 23:59:59'
let value = newData
return value
},
async getDataList() {
if (this.yearValue1 && this.yearValue2) {
if (this.yearValue2 < this.yearValue1) {
this.$modal.msgError('结束时间不能早于开始时间')
return false
} else {
this.dataForm.reportTime[0] = this.transformYear(this.yearValue1)
this.dataForm.reportTime[1] = this.transformYear(this.yearValue2)
this.timeTips = this.transformYear(this.yearValue1) + " - " + this.transformYear(this.yearValue1)
}
}
this.loading = true;
// 执行查询
const res = await this.$axios({
url: '/base/report-auto-production/page',
method: 'get',
params: this.dataForm
})
// console.log(this.queryParams);
console.log(res)
let sum = undefined
// res.data.list.forEach((ele, index) => {
// if (ele.det === false) {
// sum = res.data.list.splice(index, 1)
// }
// })
res.data.list.forEach((ele,index) => {
if (ele.det === false) {
res.data.list[index].lineId = '合计'
this.remark = res.data.list[index].remark
}
});
this.list = res.data.list
},
},
};
</script>