<!-- * @Author: zhp * @Date: 2023-12-12 13:45:25 * @LastEditTime: 2024-01-24 15:50:10 * @LastEditors: zhp * @Description: --> <template> <div class="app-container"> <el-form :inline="true" :model="dataForm" class="demo-form-inline"> <el-form-item> <el-date-picker 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="scope.row.det === true" 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="scope.row.det === true" 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="scope.row.det === true" 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="scope.row.det === true" 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="scope.row.det === true" 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> <!-- <el-table-column label="完成良品产量"> --> <el-table-column prop="customerId" label="用户"> <template slot-scope="scope"> <el-input v-if="scope.row.det === true" 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="scope.row.det === true" 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="scope.row.det === true" 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="scope.row.det === true" 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="scope.row.det === true" 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="scope.row.det === true" 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="scope.row.det === true" 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="scope.row.det === true" 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="scope.row.det === true" 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="scope.row.det === true" 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="scope.row.det === true" 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="scope.row.det === true" v-model="scope.row.productAreaThisMonth" :disabled="disabled"> </el-input> <span v-else>{{ scope.row.productAreaThisMonth }} </span> </template> </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 { getAutoDeliveDataList, updateSumAutoDeliveDataList, updateAutoDeliveDataList } 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: '', 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() }, methods: { 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 } }); this.list = res.data }, }, }; </script>