yudao-dev/src/views/report/productionShipmentsReport/index.vue
‘937886381’ 39493549b9 修改bug
2024-03-07 16:28:23 +08:00

586 lines
18 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: 2024-03-07 16:10:47
* @LastEditors: zhp
* @Description:
-->
<template>
<div class="app-container">
<el-form :inline="true" :model="dataForm" class="demo-form-inline">
<el-form-item>
<el-date-picker clearable v-model="monthValue" type="monthrange" range-separator="至" start-placeholder="开始日期"
end-placeholder="结束日期" value-format="timestamp" :clearable="false" :picker-options="pickerOptions"
size="small" style='width:350px;' @change="timeSelect">
</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-row style="float: right; margin-bottom: 5px">
<el-button size="small" @click="editDataList()">编辑</el-button>
<el-button size="small" v-if="isSave" @click="saveDataList()">保存</el-button>
</el-row>
<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="glassType" label="品种" align="center">
<template slot-scope="scope">
<el-input v-if="!disabled" v-model="scope.row.glassType" :disabled="disabled"></el-input>
<span v-else>{{ scope.row.glassType }} </span>
</template>
</el-table-column>
<el-table-column label="规格" align="center">
<el-table-column label="成品" align="center">
<el-table-column :show-header="false">
<template slot-scope="scope">
<el-input v-if="!disabled" v-model="scope.row.productionL" :disabled="disabled"></el-input>
<span v-else>{{ scope.row.productionL }} </span>
</template>
</el-table-column>
<el-table-column :show-header="false">
<template slot-scope="scope">
<el-input v-if="!disabled" v-model="scope.row.productionW" :disabled="disabled"></el-input>
<span v-else>{{ scope.row.productionW }} </span>
</template>
</el-table-column>
<el-table-column :show-header="false">
<template slot-scope="scope">
<el-input v-if="!disabled" v-model="scope.row.productionH" :disabled="disabled"></el-input>
<span v-else>{{ scope.row.productionH }} </span>
</template>
</el-table-column>
</el-table-column>
<el-table-column label="原片">
<el-table-column prop="originalGlassSize">
<template slot-scope="scope">
<el-input v-if="!disabled" v-model="scope.row.originalGlassSize" :disabled="disabled">
</el-input>
<span v-else>{{ scope.row.originalGlassSize }} </span>
</template>
</el-table-column>
</el-table-column>
</el-table-column>
<!-- <el-table-column label="完成良品产量"> -->
<el-table-column prop="customerId" label="用户">
<template slot-scope="scope">
<el-input v-if="!disabled" v-model="scope.row.customerId" :disabled="disabled">
</el-input>
<span v-else>{{ scope.row.customerId }} </span>
</template>
</el-table-column>
<el-table-column prop="packageType" label="包装形式">
<template slot-scope="scope">
<el-input v-if="!disabled" v-model="scope.row.packageType" :disabled="disabled">
</el-input>
<span v-else>{{ scope.row.packageType }} </span>
</template>
</el-table-column>
<el-table-column prop="orderNum" label="订单数量">
<template slot-scope="scope">
<el-input v-if="!disabled" v-model="scope.row.orderNum" :disabled="disabled">
</el-input>
<span v-else>{{ scope.row.orderNum }} </span>
</template>
</el-table-column>
<el-table-column prop="orderFinish" label="订单完成">
<template slot-scope="scope">
<el-input v-if="!disabled" v-model="scope.row.orderFinish" :disabled="disabled">
</el-input>
<span v-else>{{ scope.row.orderFinish }} </span>
</template>
</el-table-column>
<el-table-column prop="orderRemaining" label="未完成订单">
<template slot-scope="scope">
<el-input v-if="!disabled" v-model="scope.row.orderRemaining" :disabled="disabled">
</el-input>
<span v-else>{{ scope.row.orderRemaining }} </span>
</template>
</el-table-column>
<el-table-column prop="stockLastMonth" label="上月库存">
<template slot-scope="scope">
<el-input v-if="!disabled" v-model="scope.row.stockLastMonth" :disabled="disabled">
</el-input>
<span v-else>{{ scope.row.stockLastMonth }} </span>
</template>
</el-table-column>
<el-table-column prop="productNumThisMonth" label="本月生产成品">
<template slot-scope="scope">
<el-input v-if="!disabled" v-model="scope.row.productNumThisMonth" :disabled="disabled">
</el-input>
<span v-else>{{ scope.row.productNumThisMonth }} </span>
</template>
</el-table-column>
<el-table-column prop="deliveNum" label="发货量">
<template slot-scope="scope">
<el-input v-if="!disabled" v-model="scope.row.deliveNum" :disabled="disabled">
</el-input>
<span v-else>{{ scope.row.deliveNum }} </span>
</template>
</el-table-column>
<el-table-column prop="undeliveNum" label="未发货量">
<template slot-scope="scope">
<el-input v-if="!disabled" v-model="scope.row.undeliveNum" :disabled="disabled">
</el-input>
<span v-else>{{ scope.row.undeliveNum }} </span>
</template>
</el-table-column>
<el-table-column prop="undeliveArea" label="未发货面积">
<template slot-scope="scope">
<el-input v-if="!disabled" v-model="scope.row.undeliveArea" :disabled="disabled">
</el-input>
<span v-else>{{ scope.row.undeliveArea }} </span>
</template>
</el-table-column>
<el-table-column prop="deliveArea" label="发货面积">
<template slot-scope="scope">
<el-input v-if="!disabled" v-model="scope.row.deliveArea" :disabled="disabled">
</el-input>
<span v-else>{{ scope.row.deliveArea }} </span>
</template>
</el-table-column>
<el-table-column prop="productAreaThisMonth" label="本月生产面积">
<template slot-scope="scope">
<el-input v-if="!disabled" v-model="scope.row.productAreaThisMonth" :disabled="disabled">
</el-input>
<span v-else>{{ scope.row.productAreaThisMonth }} </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 v-if="!disabled" v-model="remark" :disabled="disabled">
</el-input>
<span v-else>{{ remark }} </span>
</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 {
getAutoDeliveDataList,
updateSumAutoDeliveDataList,
updateAutoDeliveDataList
} from '@/api/report/production';
// import Editor from '@/components/Editor';
import moment from 'moment';
// import DialogForm from './dialogForm.vue';
import { getCorePLList } from '@/api/base/coreProductionLine'
// 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: '',
monthValue:[],
// dynamicProps: [],
tableProps,
// dataForm: {
// reportTime:undefined
// },
isSave:false,
disabled: true,
sumArr: [],
timeTips:'',
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',
// },
],
pickerOptions: {
disabledDate(date) {
return date.getTime() > Date.now()
}
},
// tableBtn: [
// this.$auth.hasPermi('base:quality-inspection-record:update')
// ? {
// type: 'edit',
// btnName: '修改',
// }
// : undefined,
// this.$auth.hasPermi('base:quality-inspection-record:delete')
// ? {
// type: 'delete',
// btnName: '删除',
// }
// : undefined,
// ].filter((v) => v),
// tableProps: [
// {
// prop: 'createTime',
// label: '添加时间',
// fixed: true,
// width: 180,
// filter: (val) => moment(val).format('yyyy-MM-DD HH:mm:ss'),
// },
// {
// // width: 128,
// prop: 'inspectionDetContent',
// label: '检测内容',
// },
// {
// // width: 128,
// prop: 'lineName',
// label: '产线',
// },
// {
// // width: 128,
// prop: 'checkPerson',
// label: '检测人员',
// },
// {
// // width: 160,
// prop: 'checkTime',
// label: '检测时间',
// filter: (val) =>
// val != null ? moment(val).format('yyyy-MM-DD HH:mm:ss') : '-',
// },
// {
// width: 90,
// prop: 'source',
// label: '来源',
// filter: (val) => ['未知', '手动', '自动'][val],
// },
// ],
// 搜索框需要的 keys, 与上面 queryParams 的除 pageNo, pageSize 之外的 key 一一对应
// searchBarKeys: ['inspectionDetContent', 'checkTime', 'productionLineId'],
// form: {
// id: undefined,
// inspectionDetId: undefined,
// inspectionDetContent: undefined,
// productionLineId: undefined,
// sectionId: undefined,
// checkPerson: undefined,
// checkTime: undefined,
// source: undefined,
// explainText: undefined,
// remark: undefined,
// },
// 查询参数
dataForm: {
// pageSize: 100,
// pageNo:1,
// workOrderIdList:undefined,
// productionId: undefined,
// startTime: undefined,
// endTime: undefined,
reportTime: [],
// reportType:4,
// productionLineId: null,
},
};
},
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()
this.getDict()
},
methods: {
async getDict() {
// 产线列表
const res = await getCorePLList()
this.proLineList = res.data;
},
timeSelect() {
// switch (this.queryParams.timeDim) {
// case '1':
// if (this.timeValue[1] - this.timeValue[0] > 7 * 24 * 3600000) {
// this.$modal.msgError('最大时间范围为7天请重新选择')
// this.timeValue = []
// }
// break
// case '2':
if (this.monthValue[1] - this.monthValue[0] > 729 * 24 * 3600000) {
this.$modal.msgError('最大时间范围为24个月请重新选择')// 同理上面
this.monthValue = []
}
// break
// case '4':
// if (this.monthValue[1] - this.monthValue[0] > 729 * 24 * 3600000) {
// this.$modal.msgError('最大时间范围为24个月请重新选择')// 同理上面
// this.monthValue = []
// }
// break
// default:
},
transformTime(timeStamp) {// 本月最后一天
let year = moment(timeStamp).format('YYYY')
let month = moment(timeStamp).format('MM')
let newData = moment(new Date(year, month, 0)).format('YYYY-MM-DD') + ' 23:59:59'
let value = newData
console.log(value);
return value
},
// selectTime() {
// switch (this.queryParams.type) {
// case 1:
// this.queryParams.searchTime = this.monthValue
// break;
// case 2:
// this.queryParams.searchTime = this.weekValue
// break;
// default:
// this.queryParams.searchTime = this.dateValue
// }
// },
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 updateAutoDeliveDataList(updateArr),
]);
if (result[0] == true && result[1] == true) {
// console.log(res)
this.disabled = true
this.isSave = false
this.getDataList()
} else {
this.$modal.msgError('更新失败');
}
},
async getDataList() {
if (this.monthValue.length > 0) {
console.log(this.monthValue)
this.dataForm.reportTime[0] = this.transformTime(this.monthValue[0])
// this.queryParams.startTime = this.monthValue[0]
this.dataForm.reportTime[1] = this.transformTime(this.monthValue[1])
this.timeTips = moment(this.monthValue[0]).format('YYYY-MM-DD') + ' - ' + moment(this.monthValue[1]).format('YYYY-MM-DD')
console.log(this.timeTips);
} else {
// this.$modal.msgError('月范围不能为空')
// return false
}
console.log(this.dataForm);
const res = await this.$axios({
url: 'base/report-auto-delive/listPlus',
method: 'get',
params: this.dataForm
})
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.forEach((ele,index) => {
if (ele.det === false) {
res.data[index].glassType = '合计'
this.remark = res.data[index].remark
}
});
// res.data.list.forEach(item => {
// this.proLineList.forEach(it => {
// if (item.lineId === it.id) {
// console.log(item)
// item.lineName = it.name
// }
// })
// })
this.list = res.data
},
},
};
</script>