@@ -1,7 +1,7 @@ | |||
/* | |||
* @Author: zhp | |||
* @Date: 2023-12-12 13:49:02 | |||
* @LastEditTime: 2023-12-14 14:21:43 | |||
* @LastEditTime: 2024-01-24 15:54:58 | |||
* @LastEditors: zhp | |||
* @Description: | |||
*/ | |||
@@ -55,3 +55,12 @@ export function updateSumAutoDeliveDataList(query) { | |||
data: query, | |||
}) | |||
} | |||
export function exportProductExcel(query) { | |||
return request({ | |||
url: '/base/report-auto-production-backup/export-excel', | |||
method: 'get', | |||
params: query, | |||
responseType: 'blob' | |||
}) | |||
} |
@@ -2,7 +2,7 @@ | |||
* @Author: zwq | |||
* @Date: 2021-07-19 15:18:30 | |||
* @LastEditors: zhp | |||
* @LastEditTime: 2024-01-22 16:04:14 | |||
* @LastEditTime: 2024-01-24 17:07:01 | |||
* @Description: | |||
--> | |||
<template> | |||
@@ -94,12 +94,14 @@ | |||
:table-data="funList" /> --> | |||
<dv-scroll-board :config="funConfig" style="width:100%;height:350px" ref='funScrollBoard' /> | |||
</el-col> | |||
<span class="eqLine"></span> | |||
<el-col :span="6"> | |||
<div style="font-size:20px;margin: 5px 0 10px 0;">退火风机</div> | |||
<!-- <base-table1 :page="1" :limit="999" :show-index="false" :table-config="EqMonitoringPropsFun" | |||
:table-data="annealFunList" /> --> | |||
<dv-scroll-board :config="annealFunConfig" style="width:100%;height:350px" ref='annealFunScrollBoard' /> | |||
</el-col> | |||
<span class="eqLineTwo"></span> | |||
<el-col :span="12" style="float: right;"> | |||
<div style="font-size:20px;margin: 5px 0 10px 0;">产线设备</div> | |||
<!-- <base-table1 :page="1" :limit="999" :show-index="false" :table-config="EqMonitoringProps" | |||
@@ -572,7 +574,7 @@ export default { | |||
arr.push([ | |||
// console.log(item) | |||
` | |||
<span style="color:rgba(255,255,255,0.5)" >${index + 1 || ''} | |||
<span style="color:rgba(255,255,255,0.5)" >${index || ''} | |||
</span>`, | |||
// formatDate(item.planStartTime) || '', | |||
` | |||
@@ -581,7 +583,7 @@ export default { | |||
`<span style="color:rgba(255,255,255,0.5)">${this.funWsData.data.annealFanInfo[i] || ''}</span>`, | |||
]) | |||
} | |||
this.annealFanConfig.data = arr | |||
this.annealFunConfig.data = arr | |||
this.$refs['annealFanScrollBoard'].updateRows(arr) | |||
} | |||
if (this.funWsData.type === 'FanInfo') { | |||
@@ -596,7 +598,7 @@ export default { | |||
arr.push([ | |||
// console.log(item) | |||
` | |||
<span style="color:rgba(255,255,255,0.5)" >${index + 1 || ''}</span>`, | |||
<span style="color:rgba(255,255,255,0.5)" >${index || ''}</span>`, | |||
// formatDate(item.planStartTime) || '', | |||
` | |||
<span style="color:rgba(255,255,255,0.5)" >${i || ''}</span>`, | |||
@@ -884,6 +886,30 @@ export default { | |||
</style> | |||
<style lang="scss"> | |||
.eqLine{ | |||
height: 290px; | |||
width: 1px; | |||
position: absolute; | |||
left: 25%; | |||
top: 12%; | |||
background: linear-gradient(to bottom,rgba(60, | |||
231, | |||
255,0), #3CE7FF, rgba(60, | |||
231, | |||
255, 0)); | |||
} | |||
.eqLineTwo { | |||
height: 290px; | |||
width: 1px; | |||
position: absolute; | |||
left: 50%; | |||
top: 12%; | |||
background: linear-gradient(to bottom, rgba(60, | |||
231, | |||
255, 0), #3CE7FF, rgba(60, | |||
231, | |||
255, 0)); | |||
} | |||
.visual-container { | |||
::-webkit-scrollbar { | |||
width: 8px; | |||
@@ -2,7 +2,7 @@ | |||
* @Author: gtz | |||
* @Date: 2022-01-19 15:58:17 | |||
* @LastEditors: zhp | |||
* @LastEditTime: 2024-01-18 13:59:40 | |||
* @LastEditTime: 2024-01-24 17:01:21 | |||
* @Description: file content | |||
* @FilePath: \mt-bus-fe\src\views\OperationalOverview\components\baseContainer\index.vue | |||
--> | |||
@@ -157,7 +157,7 @@ export default { | |||
// background-position: 0 0; | |||
} | |||
&__eqStatus { | |||
background: url(../../../../assets/img/eqStatus.png) no-repeat; | |||
background: url(../../../../assets/img/short.png) no-repeat; | |||
background-size: 100% 100%; | |||
} | |||
// border-radius: 40px 0px 40px 0px; | |||
@@ -83,20 +83,38 @@ export default { | |||
this.chart = null | |||
}, | |||
methods: { | |||
initChart(nameList,dataList) { | |||
initChart(nameList, dataList) { | |||
console.log('1111', dataList); | |||
// console.log(1) | |||
this.chart = echarts.init(document.getElementById(this.id)) | |||
if (dataList.length !== 0) { | |||
// if (dataList.length !== 0) { | |||
// this.$set(this.series, "data", dataList); | |||
this.series = [{ | |||
type: 'bar', | |||
data: dataList, | |||
barWidth: 6 | |||
itemStyle: { | |||
normal: { | |||
// color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [ | |||
// { offset: 0, color: '#9DD5FF' }, | |||
// { offset: 0.3, color: '#1295FF' } | |||
// ]), | |||
label: { | |||
show: true, //开启显示 | |||
position: 'top', //在上方显示 | |||
textStyle: { //数值样式 | |||
color: '#ced1d5', | |||
fontSize: 12 | |||
} | |||
}, | |||
} | |||
// barBorderRadius: this.borderRadius | |||
}, | |||
barWidth: 12, | |||
}] | |||
} | |||
if (nameList.length !== 0) { | |||
// } | |||
// if (nameList.length !== 0) { | |||
this.nameList = nameList | |||
} | |||
// } | |||
this.chart.setOption({ | |||
tooltip: { | |||
trigger: 'axis', | |||
@@ -112,6 +130,16 @@ export default { | |||
bottom: '3%', | |||
containLabel: true | |||
}, | |||
// legend: { | |||
// itemWidth: 10, | |||
// itemHeight: 10, | |||
// // right: '20px', | |||
// data: nameList, | |||
// textStyle: { | |||
// fontSize: 12 * this.beilv, | |||
// color: '#ced1d5' | |||
// } | |||
// }, | |||
xAxis: { | |||
type: 'category', | |||
axisLine: { | |||
@@ -2,7 +2,7 @@ | |||
* @Author: zwq | |||
* @Date: 2021-07-19 15:18:30 | |||
* @LastEditors: zhp | |||
* @LastEditTime: 2024-01-22 14:37:50 | |||
* @LastEditTime: 2024-01-24 17:10:28 | |||
* @Description: | |||
--> | |||
<template> | |||
@@ -826,7 +826,10 @@ export default { | |||
this.productLineList.forEach((item) => { | |||
this.SJGWsData.detData.forEach((ele) => { | |||
if (item.id == ele.productionLineId) { | |||
nameList.push(item.name) | |||
if (item.name.substr(0, 1) == "D") { | |||
nameList.push(item.name) | |||
} | |||
} | |||
}) | |||
}) | |||
@@ -0,0 +1,179 @@ | |||
<!-- | |||
* @Author: zhp | |||
* @Date: 2024-01-24 15:15:24 | |||
* @LastEditTime: 2024-01-24 15:38:53 | |||
* @LastEditors: zhp | |||
* @Description: | |||
--> | |||
<template> | |||
<div class="app-container"> | |||
<div> | |||
<el-form :model="listQuery" :inline="true" ref="dataForm" class="blueTip"> | |||
<el-form-item label="日" prop="reportTime"> | |||
<el-date-picker v-model="reportTime" @change="changeTime" type="date" placeholder="选择日期"> | |||
</el-date-picker> | |||
</el-form-item> | |||
<el-form-item> | |||
<el-button v-if="this.$auth.hasPermi('report:glass-month:query')" type="primary" size="small" | |||
@click="getDataList">查询</el-button> | |||
<el-button v-if="this.$auth.hasPermi('report:glass-month:export')" type="primary" size="small" plain | |||
@click="handleExport">导出</el-button> | |||
</el-form-item> | |||
</el-form> | |||
</div> | |||
<inputTable :data="tableData" :time="[startTimeStamp, endTimeStamp]" :sum="all" :type="listQuery.reportType" | |||
@refreshDataList="getDataList" /> | |||
<!-- <pagination | |||
:limit.sync="listQuery.pageSize" | |||
:page.sync="listQuery.pageNo" | |||
:total="listQuery.total" | |||
@pagination="getDataList" /> --> | |||
</div> | |||
</template> | |||
<script> | |||
import { parseTime } from '../../core/mixins/code-filter'; | |||
import { getGlassPage, exportGlasscExcel } from '@/api/report/glass'; | |||
import inputTable from './inputTable.vue'; | |||
import { getCorePLList } from '@/api/base/coreProductionLine'; | |||
import moment from 'moment' | |||
export default { | |||
components: { inputTable }, | |||
data() { | |||
return { | |||
urlOptions: { | |||
getDataListURL: getGlassPage, | |||
exportURL: exportGlasscExcel | |||
}, | |||
listQuery: { | |||
pageSize: 10, | |||
pageNo: 1, | |||
total: 0, | |||
reportType: 2, | |||
reportTime: [] | |||
}, | |||
reportTime: '', | |||
startTimeStamp: '', | |||
endTimeStamp: '', | |||
tableData: [], | |||
proLineList: [], | |||
all: {} | |||
}; | |||
}, | |||
created() { | |||
this.getDict() | |||
}, | |||
methods: { | |||
async getDict() { | |||
// 产线列表 | |||
const res = await getCorePLList(); | |||
this.proLineList = res.data; | |||
}, | |||
// 获取数据列表 | |||
async getDataList() { | |||
this.dataListLoading = true; | |||
await this.urlOptions.getDataListURL(this.listQuery).then(response => { | |||
this.tableData = response.data.filter(item => { | |||
this.proLineList.forEach(it => { | |||
if (item.lineId === it.id) { | |||
item.lineName = it.name | |||
} | |||
}) | |||
if (item.det === false) { | |||
this.all = { | |||
id: item.id, | |||
remark: item.remark | |||
} | |||
} | |||
return item.det === true | |||
}); | |||
this.listQuery.total = response.data.length; | |||
this.dataListLoading = false; | |||
}); | |||
}, | |||
add0(m) { | |||
return m < 10 ? '0' + m : m | |||
}, | |||
format(shijianchuo) { | |||
//shijianchuo是整数,否则要parseInt转换 | |||
var time = moment(new Date(shijianchuo)).format('YYYY-MM-DD HH:mm:ss') | |||
// console.log(time) | |||
// var y = time.getFullYear(); | |||
// var m = time.getMonth() + 1; | |||
// var d = time.getDate(); | |||
// var h = time.getHours(); | |||
// var mm = time.getMinutes(); | |||
// var s = time.getSeconds(); | |||
return time | |||
}, | |||
changeTime(val) { | |||
if (val) { | |||
// console.log(val) | |||
// console.log(val.setHours(7, 0, 0)) | |||
// console.log(val.setHours(7, 0, 0) + 24 * 60 * 60 * 1000) | |||
// let time = this.format(val.setHours(7, 0, 0)) | |||
this.listQuery.reportTime[0] = this.format(val.setHours(7, 0, 0)) //+ ' 00:00:00' //new Date(this.startTimeStamp + ' 00:00:00').getTime() / 1000 | |||
this.listQuery.reportTime[1] = this.format(val.setHours(7, 0, 0) + 24 * 60 * 60 * 1000) //+ ' 23:59:59' //new Date(this.endTimeStamp + ' 23:59:59').getTime() / 1000 | |||
console.log(this.listQuery.reportTime); | |||
} else { | |||
this.listQuery.reportTime = [] | |||
} | |||
}, | |||
//时间戳转为yy-mm-dd hh:mm:ss | |||
timeFun(unixtimestamp) { | |||
var unixtimestamp = new Date(unixtimestamp); | |||
var year = 1900 + unixtimestamp.getYear(); | |||
var month = "0" + (unixtimestamp.getMonth() + 1); | |||
var date = "0" + unixtimestamp.getDate(); | |||
return year + "-" + month.substring(month.length - 2, month.length) + "-" + date.substring(date.length - 2, date.length) | |||
}, | |||
buttonClick(val) { | |||
this.listQuery.reportTime = val.reportTime ? val.reportTime : undefined; | |||
switch (val.btnName) { | |||
case 'search': | |||
this.listQuery.pageNo = 1; | |||
this.listQuery.pageSize = 10; | |||
this.getDataList(); | |||
break; | |||
case 'export': | |||
this.handleExport(); | |||
break; | |||
default: | |||
console.log(val); | |||
} | |||
}, | |||
/** 导出按钮操作 */ | |||
handleExport() { | |||
// 处理查询参数 | |||
let params = { ...this.listQuery }; | |||
params.pageNo = undefined; | |||
params.pageSize = undefined; | |||
this.$modal.confirm('是否确认导出所有数据项?').then(() => { | |||
this.exportLoading = true; | |||
return this.urlOptions.exportURL(params); | |||
}).then(response => { | |||
this.$download.excel(response, '原片生产周报.xls'); | |||
this.exportLoading = false; | |||
}).catch(() => { }); | |||
} | |||
}, | |||
}; | |||
</script> | |||
<style scoped> | |||
/* .blueTip { */ | |||
/* padding-bottom: 10px; */ | |||
/* } */ | |||
.blueTip::before{ | |||
display: inline-block; | |||
content: ''; | |||
width: 4px; | |||
height: 18px; | |||
background: #0B58FF; | |||
border-radius: 1px; | |||
margin-right: 8PX; | |||
margin-top: 8px; | |||
} | |||
</style> |
@@ -0,0 +1,37 @@ | |||
<template> | |||
<div class="tableInner"> | |||
<el-input v-model="list[itemProp]" @blur="changeInput" /> | |||
</div> | |||
</template> | |||
<script> | |||
export default { | |||
name: 'InputArea', | |||
props: { | |||
injectData: { | |||
type: Object, | |||
default: () => ({}) | |||
}, | |||
itemProp: { | |||
type: String | |||
} | |||
}, | |||
data() { | |||
return { | |||
list: this.injectData | |||
} | |||
}, | |||
methods: { | |||
changeInput() { | |||
console.log(this.list) | |||
this.$emit('emitData', this.list) | |||
} | |||
} | |||
} | |||
</script> | |||
<style> | |||
.tableInner .el-input__inner { | |||
border: none; | |||
padding: 0; | |||
height: 33px; | |||
} | |||
</style> |
@@ -0,0 +1,570 @@ | |||
<!-- | |||
* @Author: zhp | |||
* @Date: 2023-12-12 13:45:25 | |||
* @LastEditTime: 2024-01-24 16:53:41 | |||
* @LastEditors: zhp | |||
* @Description: | |||
--> | |||
<template> | |||
<div class="app-container"> | |||
<el-form :inline="true" :model="dataForm" class="demo-form-inline"> | |||
<el-form-item label="日" prop="reportTime"> | |||
<el-date-picker v-model="reportTime" @change="changeTime" type="date" placeholder="选择日期"> | |||
</el-date-picker> | |||
</el-form-item> | |||
<el-button type="primary" @click="getDataList()">查询</el-button> | |||
<el-button v-if="this.$auth.hasPermi('report:glass-month:export')" type="primary" size="small" plain | |||
@click="handleExport">导出</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="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, | |||
exportProductExcel | |||
} 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, | |||
urlOptions: { | |||
exportURL: exportProductExcel | |||
}, | |||
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: { | |||
// workOrderIdList:undefined, | |||
// productionId: undefined, | |||
// startTime: undefined, | |||
// endTime: undefined, | |||
reportTime: [], | |||
reportType:2, | |||
// 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: { | |||
format(shijianchuo) { | |||
//shijianchuo是整数,否则要parseInt转换 | |||
var time = moment(new Date(shijianchuo)).format('YYYY-MM-DD HH:mm:ss') | |||
// console.log(time) | |||
// var y = time.getFullYear(); | |||
// var m = time.getMonth() + 1; | |||
// var d = time.getDate(); | |||
// var h = time.getHours(); | |||
// var mm = time.getMinutes(); | |||
// var s = time.getSeconds(); | |||
return time | |||
}, | |||
changeTime(val) { | |||
if (val) { | |||
// console.log(val) | |||
// console.log(val.setHours(7, 0, 0)) | |||
// console.log(val.setHours(7, 0, 0) + 24 * 60 * 60 * 1000) | |||
// let time = this.format(val.setHours(7, 0, 0)) | |||
this.dataForm.reportTime[0] = this.format(val.setHours(7, 0, 0)) //+ ' 00:00:00' //new Date(this.startTimeStamp + ' 00:00:00').getTime() / 1000 | |||
this.dataForm.reportTime[1] = this.format(val.setHours(7, 0, 0) + 24 * 60 * 60 * 1000) //+ ' 23:59:59' //new Date(this.endTimeStamp + ' 23:59:59').getTime() / 1000 | |||
console.log(this.dataForm.reportTime); | |||
} else { | |||
this.dataForm.reportTime = [] | |||
} | |||
}, | |||
handleExport() { | |||
// 处理查询参数 | |||
let params = { ...this.dataForm }; | |||
params.pageNo = undefined; | |||
params.pageSize = undefined; | |||
this.$modal.confirm('是否确认导出所有数据项?').then(() => { | |||
this.exportLoading = true; | |||
return this.urlOptions.exportURL(params); | |||
}).then(response => { | |||
this.$download.excel(response, '成品生产月报.xls'); | |||
this.exportLoading = false; | |||
}).catch(() => { }); | |||
}, | |||
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 updateProductionDataList(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-production/page', | |||
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.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> |
@@ -1,7 +1,7 @@ | |||
<!-- | |||
* @Author: zhp | |||
* @Date: 2023-12-12 13:45:25 | |||
* @LastEditTime: 2023-12-14 14:56:38 | |||
* @LastEditTime: 2024-01-24 15:57:10 | |||
* @LastEditors: zhp | |||
* @Description: | |||
--> | |||
@@ -15,15 +15,18 @@ | |||
</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-button v-if="this.$auth.hasPermi('report:glass-month:export')" type="primary" size="small" plain | |||
@click="handleExport">导出</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 :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> | |||
@@ -144,7 +147,8 @@ | |||
import { | |||
getProductionDataList, | |||
updateProductionDataList, | |||
updateSumProductionDataList | |||
updateSumProductionDataList, | |||
exportProductExcel | |||
} from '@/api/report/production'; | |||
// import Editor from '@/components/Editor'; | |||
import moment from 'moment'; | |||
@@ -251,9 +255,9 @@ export default { | |||
monthValue:[], | |||
// dynamicProps: [], | |||
tableProps, | |||
// dataForm: { | |||
// reportTime:undefined | |||
// }, | |||
urlOptions: { | |||
exportURL: exportProductExcel | |||
}, | |||
isSave:false, | |||
disabled: true, | |||
sumArr: [], | |||
@@ -420,6 +424,19 @@ export default { | |||
this.getDataList() | |||
}, | |||
methods: { | |||
handleExport() { | |||
// 处理查询参数 | |||
let params = { ...this.dataForm }; | |||
params.pageNo = undefined; | |||
params.pageSize = undefined; | |||
this.$modal.confirm('是否确认导出所有数据项?').then(() => { | |||
this.exportLoading = true; | |||
return this.urlOptions.exportURL(params); | |||
}).then(response => { | |||
this.$download.excel(response, '成品生产月报.xls'); | |||
this.exportLoading = false; | |||
}).catch(() => { }); | |||
}, | |||
timeSelect() { | |||
// switch (this.queryParams.timeDim) { | |||
// case '1': | |||
@@ -1,7 +1,7 @@ | |||
<!-- | |||
* @Author: zhp | |||
* @Date: 2023-12-12 13:45:25 | |||
* @LastEditTime: 2023-12-14 14:56:40 | |||
* @LastEditTime: 2024-01-24 15:50:10 | |||
* @LastEditors: zhp | |||
* @Description: | |||
--> | |||
@@ -15,10 +15,13 @@ | |||
</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-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' | |||
@@ -0,0 +1,37 @@ | |||
<template> | |||
<div class="tableInner"> | |||
<el-input v-model="list[itemProp]" @blur="changeInput" /> | |||
</div> | |||
</template> | |||
<script> | |||
export default { | |||
name: 'InputArea', | |||
props: { | |||
injectData: { | |||
type: Object, | |||
default: () => ({}) | |||
}, | |||
itemProp: { | |||
type: String | |||
} | |||
}, | |||
data() { | |||
return { | |||
list: this.injectData | |||
} | |||
}, | |||
methods: { | |||
changeInput() { | |||
console.log(this.list) | |||
this.$emit('emitData', this.list) | |||
} | |||
} | |||
} | |||
</script> | |||
<style> | |||
.tableInner .el-input__inner { | |||
border: none; | |||
padding: 0; | |||
height: 33px; | |||
} | |||
</style> |
@@ -0,0 +1,468 @@ | |||
<!-- | |||
* @Author: zhp | |||
* @Date: 2023-12-12 13:45:25 | |||
* @LastEditTime: 2024-01-24 15:55:48 | |||
* @LastEditors: zhp | |||
* @Description: | |||
--> | |||
<template> | |||
<div class="app-container"> | |||
<el-form :inline="true" :model="dataForm" class="demo-form-inline"> | |||
<el-form-item> | |||
<el-form-item label="日" prop="reportTime"> | |||
<el-date-picker v-model="reportTime" @change="changeTime" type="date" placeholder="选择日期"> | |||
</el-date-picker> | |||
</el-form-item> | |||
</el-form-item> | |||
<el-button type="primary" @click="getDataList()">查询</el-button> | |||
<el-button v-if="this.$auth.hasPermi('report:glass-month:export')" type="primary" size="small" plain | |||
@click="handleExport">导出</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="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, | |||
exportProductExcel | |||
} 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: '', | |||
urlOptions: { | |||
// getDataListURL: getGlassPage, | |||
exportURL: exportProductExcel | |||
}, | |||
// dynamicProps: [], | |||
tableProps, | |||
timeTips:'', | |||
// dataForm: { | |||
// reportTime:undefined | |||
// }, | |||
isSave:false, | |||
disabled: true, | |||
sumArr: [], | |||
weekValue1: null,//最多24周 | |||
weekValue2: null, | |||
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', | |||
// }, | |||
], | |||
pickerOptionsWeek: { | |||
disabledDate(time) { | |||
let day = Date.now() | |||
let limitTime = moment(day).day(-1) | |||
return time.getTime() > new Date(limitTime).getTime() | |||
} | |||
}, | |||
reportTime:undefined, | |||
dataForm: { | |||
// workOrderIdList:undefined, | |||
// productionId: undefined, | |||
// startTime: undefined, | |||
// endTime: undefined, | |||
reportTime: [], | |||
reportType:2 | |||
// 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: { | |||
format(shijianchuo) { | |||
//shijianchuo是整数,否则要parseInt转换 | |||
var time = moment(new Date(shijianchuo)).format('YYYY-MM-DD HH:mm:ss') | |||
// console.log(time) | |||
// var y = time.getFullYear(); | |||
// var m = time.getMonth() + 1; | |||
// var d = time.getDate(); | |||
// var h = time.getHours(); | |||
// var mm = time.getMinutes(); | |||
// var s = time.getSeconds(); | |||
return time | |||
}, | |||
changeTime(val) { | |||
if (val) { | |||
// console.log(val) | |||
// console.log(val.setHours(7, 0, 0)) | |||
// console.log(val.setHours(7, 0, 0) + 24 * 60 * 60 * 1000) | |||
// let time = this.format(val.setHours(7, 0, 0)) | |||
this.dataForm.reportTime[0] = this.format(val.setHours(7, 0, 0)) //+ ' 00:00:00' //new Date(this.startTimeStamp + ' 00:00:00').getTime() / 1000 | |||
this.dataForm.reportTime[1] = this.format(val.setHours(7, 0, 0) + 24 * 60 * 60 * 1000) //+ ' 23:59:59' //new Date(this.endTimeStamp + ' 23:59:59').getTime() / 1000 | |||
console.log(this.dataForm.reportTime); | |||
} else { | |||
this.dataForm.reportTime = [] | |||
} | |||
}, | |||
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('更新失败'); | |||
} | |||
}, | |||
handleExport() { | |||
// 处理查询参数 | |||
let params = { ...this.dataForm }; | |||
params.pageNo = undefined; | |||
params.pageSize = undefined; | |||
this.$modal.confirm('是否确认导出所有数据项?').then(() => { | |||
this.exportLoading = true; | |||
return this.urlOptions.exportURL(params); | |||
}).then(response => { | |||
this.$download.excel(response, '成品生产日报.xls'); | |||
this.exportLoading = false; | |||
}).catch(() => { }); | |||
}, | |||
async getDataList() { | |||
// if (this.weekValue1 && this.weekValue2) { | |||
// this.dataForm.reportTime[0] = moment(this.weekValue1).day(0).format('YYYY-MM-DD') + ' 00:00:00' | |||
// // this.queryParams.startTime = this.monthValue[0] | |||
// this.dataForm.reportTime[1] = moment(this.weekValue2).day(6).format('YYYY-MM-DD') + ' 23:59:59' | |||
// this.timeTips = moment(this.weekValue1).day(0).format('YYYY-MM-DD') + ' - ' + moment(this.weekValue2).day(0).format('YYYY-MM-DD') | |||
// } else { | |||
// } | |||
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> |
@@ -1,7 +1,7 @@ | |||
<!-- | |||
* @Author: zhp | |||
* @Date: 2023-12-12 13:45:25 | |||
* @LastEditTime: 2023-12-14 14:56:37 | |||
* @LastEditTime: 2024-01-24 15:59:13 | |||
* @LastEditors: zhp | |||
* @Description: | |||
--> | |||
@@ -17,10 +17,14 @@ | |||
</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-button type="primary" @click="getDataList()">查询</el-button> --> | |||
<el-button v-if="this.$auth.hasPermi('report:glass-month:export')" type="primary" size="small" plain | |||
@click="handleExport">导出</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' | |||
@@ -146,7 +150,8 @@ | |||
import { | |||
getProductionDataList, | |||
updateProductionDataList, | |||
updateSumProductionDataList | |||
updateSumProductionDataList, | |||
exportProductExcel | |||
} from '@/api/report/production'; | |||
// import Editor from '@/components/Editor'; | |||
import moment from 'moment'; | |||
@@ -252,6 +257,9 @@ export default { | |||
remark:'', | |||
// dynamicProps: [], | |||
tableProps, | |||
urlOptions: { | |||
exportURL: exportProductExcel | |||
}, | |||
timeTips:'', | |||
// dataForm: { | |||
// reportTime:undefined | |||
@@ -358,6 +366,19 @@ export default { | |||
this.getDataList() | |||
}, | |||
methods: { | |||
handleExport() { | |||
// 处理查询参数 | |||
let params = { ...this.dataForm }; | |||
params.pageNo = undefined; | |||
params.pageSize = undefined; | |||
this.$modal.confirm('是否确认导出所有数据项?').then(() => { | |||
this.exportLoading = true; | |||
return this.urlOptions.exportURL(params); | |||
}).then(response => { | |||
this.$download.excel(response, '成品生产周报.xls'); | |||
this.exportLoading = false; | |||
}).catch(() => { }); | |||
}, | |||
startWeek() { | |||
if (this.weekValue1 && this.weekValue2) { | |||
let a = new Date(this.weekValue1).getTime() | |||
@@ -1,7 +1,7 @@ | |||
<!-- | |||
* @Author: zhp | |||
* @Date: 2023-12-12 13:45:25 | |||
* @LastEditTime: 2023-12-14 14:56:45 | |||
* @LastEditTime: 2024-01-24 15:59:21 | |||
* @LastEditors: zhp | |||
* @Description: | |||
--> | |||
@@ -17,10 +17,15 @@ | |||
</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-button v-if="this.$auth.hasPermi('report:glass-month:export')" type="primary" size="small" plain | |||
@click="handleExport">导出</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' | |||
@@ -147,7 +152,8 @@ | |||
import { | |||
getProductionDataList, | |||
updateProductionDataList, | |||
updateSumProductionDataList | |||
updateSumProductionDataList, | |||
exportProductExcel | |||
} from '@/api/report/production'; | |||
// import Editor from '@/components/Editor'; | |||
import moment from 'moment'; | |||
@@ -250,6 +256,9 @@ export default { | |||
data() { | |||
return { | |||
list: [], | |||
urlOptions: { | |||
exportURL: exportProductExcel | |||
}, | |||
remark: '', | |||
timeTips:'', | |||
yearValue1: null,//最多10年 | |||
@@ -357,6 +366,19 @@ export default { | |||
this.getDataList() | |||
}, | |||
methods: { | |||
handleExport() { | |||
// 处理查询参数 | |||
let params = { ...this.dataForm }; | |||
params.pageNo = undefined; | |||
params.pageSize = undefined; | |||
this.$modal.confirm('是否确认导出所有数据项?').then(() => { | |||
this.exportLoading = true; | |||
return this.urlOptions.exportURL(params); | |||
}).then(response => { | |||
this.$download.excel(response, '成品生产月报.xls'); | |||
this.exportLoading = false; | |||
}).catch(() => { }); | |||
}, | |||
startYear() { | |||
if (this.yearValue2 && this.yearValue2 < this.yearValue1) { | |||
this.$modal.msgError('开始时间不能晚于结束时间,请重新选择') | |||