Merge branch 'test' into lb

This commit is contained in:
lb 2023-10-13 17:04:18 +08:00
commit ca0f62b2eb
28 changed files with 12216 additions and 176 deletions

View File

@ -144,11 +144,6 @@ export default {
// this.listQuery.lineId = '1672847052717821953' // this.listQuery.lineId = '1672847052717821953'
// this.listQuery.startTime = '1693497600000'; // this.listQuery.startTime = '1693497600000';
// this.listQuery.endTime = '1693843200000'; // this.listQuery.endTime = '1693843200000';
this.tableData.splice(0)
this.xData.splice(0)
this.yData.splice(0)
this.tableProps.splice(0)
this.spanArr.splice(0)
this.urlOptions.getDataListURL(this.listQuery).then(res => { this.urlOptions.getDataListURL(this.listQuery).then(res => {
console.log(res) console.log(res)
let arr = [ let arr = [
@ -228,11 +223,17 @@ export default {
this.listQuery.lineId = val.lineIds this.listQuery.lineId = val.lineIds
this.listQuery.startTime = val.time ? String(new Date(val.time[0]).getTime()) : undefined; this.listQuery.startTime = val.time ? String(new Date(val.time[0]).getTime()) : undefined;
this.listQuery.endTime = val.time ? String(new Date(val.time[1]).getTime()) : undefined; this.listQuery.endTime = val.time ? String(new Date(val.time[1]).getTime()) : undefined;
if (val.time) { if (val.time && val.lineIds) {
this.tableData = []
this.xData = []
this.yData = []
this.tableProps = []
this.spanArr = []
this.timeList = []
this.getData() this.getData()
} else { } else {
this.$message({ this.$message({
message: '请选择时间', message: '请选择产线和时间',
type: 'warning' type: 'warning'
}); });
} }

View File

@ -72,7 +72,7 @@ export default {
{ {
type: 'datePicker', type: 'datePicker',
label: '时间', label: '时间',
dateType: 'datetime', dateType: 'month',
format: 'yyyy-MM-dd', format: 'yyyy-MM-dd',
valueFormat: 'yyyy-MM-dd HH:mm:ss', valueFormat: 'yyyy-MM-dd HH:mm:ss',
rangeSeparator: '-', rangeSeparator: '-',
@ -220,7 +220,6 @@ export default {
}); });
}, },
buttonClick(val) { buttonClick(val) {
// console.log(val)
switch (val.btnName) { switch (val.btnName) {
case 'search': case 'search':
this.listQuery.lineIds = val.lineIds ? val.lineIds :undefined this.listQuery.lineIds = val.lineIds ? val.lineIds :undefined

View File

@ -2,7 +2,7 @@
* @Author: zwq * @Author: zwq
* @Date: 2023-08-03 14:09:18 * @Date: 2023-08-03 14:09:18
* @LastEditors: DY * @LastEditors: DY
* @LastEditTime: 2023-10-10 16:54:09 * @LastEditTime: 2023-10-11 11:20:51
* @Description: * @Description:
--> -->
<template> <template>
@ -61,6 +61,7 @@ export default {
switchLineBindProduct(data).then((response) => { switchLineBindProduct(data).then((response) => {
this.$modal.msgSuccess('修改成功'); this.$modal.msgSuccess('修改成功');
this.visible = false; this.visible = false;
this.list.productName = this.list.string.split('+')[1]
this.$emit('emitData'); this.$emit('emitData');
}); });
}, },

View File

@ -1,7 +1,7 @@
<!-- <!--
* @Author: Do not edit * @Author: Do not edit
* @Date: 2023-08-29 14:59:29 * @Date: 2023-08-29 14:59:29
* @LastEditTime: 2023-10-09 09:08:08 * @LastEditTime: 2023-10-12 16:54:15
* @LastEditors: DY * @LastEditors: DY
* @Description: * @Description:
--> -->
@ -117,6 +117,7 @@ export default {
pageNo: 1, pageNo: 1,
total: 1, total: 1,
}, },
fileName: '',
exportLoading: false, exportLoading: false,
dataListLoading: false, dataListLoading: false,
dialogVisible: false, dialogVisible: false,
@ -207,6 +208,7 @@ export default {
test() { test() {
var target = document.getElementsByClassName("right-aside")[0] var target = document.getElementsByClassName("right-aside")[0]
target.style.background = '#FFFFFF' target.style.background = '#FFFFFF'
var that = this
setTimeout(() => { setTimeout(() => {
html2canvas(target).then(function(canvas) { html2canvas(target).then(function(canvas) {
var contentWidth = canvas.width var contentWidth = canvas.width
@ -242,7 +244,7 @@ export default {
} }
} }
pdf.save('产线统计自动报表.pdf') pdf.save(that.fileName + '产线产量.pdf')
}) })
}, 300) }, 300)
}, },
@ -285,7 +287,7 @@ export default {
try { try {
FileSaver.saveAs(new Blob([exportTableOut], { FileSaver.saveAs(new Blob([exportTableOut], {
type: 'application/octet-stream' type: 'application/octet-stream'
}), '产线统计自动报表.xlsx') }), this.fileName + '产线产量.xlsx')
} catch (e) { } catch (e) {
if (typeof console !== 'undefined') console.log(e, exportTableOut) if (typeof console !== 'undefined') console.log(e, exportTableOut)
} }
@ -310,6 +312,9 @@ export default {
this.listQuery.reportType = val.reportType ? val.reportType : undefined; this.listQuery.reportType = val.reportType ? val.reportType : undefined;
this.listQuery.reportStartTime = val.timeVal ? [new Date(val.timeVal[0]).getTime()] : undefined; this.listQuery.reportStartTime = val.timeVal ? [new Date(val.timeVal[0]).getTime()] : undefined;
this.listQuery.reportEndTime = val.timeVal ? [new Date(val.timeVal[1]).getTime()] : undefined; this.listQuery.reportEndTime = val.timeVal ? [new Date(val.timeVal[1]).getTime()] : undefined;
if (val.timeVal && val.timeVal.length > 0) {
this.fileName = val.timeVal[0].slice(0, 10) + '-' + val.timeVal[1].slice(0, 10) + '_'
}
this.getDataList(); this.getDataList();
break; break;
case 'export': case 'export':

View File

@ -1,7 +1,7 @@
<!-- <!--
* @Author: Do not edit * @Author: Do not edit
* @Date: 2023-08-29 14:59:29 * @Date: 2023-08-29 14:59:29
* @LastEditTime: 2023-10-09 15:14:42 * @LastEditTime: 2023-10-12 16:51:54
* @LastEditors: DY * @LastEditors: DY
* @Description: * @Description:
--> -->
@ -110,7 +110,7 @@ export default {
showData: [], showData: [],
tableData: [], tableData: [],
selectedList: [], selectedList: [],
fileName: [], fileName: '',
formConfig: [ formConfig: [
{ {
type: 'select', type: 'select',
@ -156,7 +156,7 @@ export default {
} }
// const time = new Date() // const time = new Date()
// this.formConfig[1].defaultSelect = [time, time] // this.formConfig[1].defaultSelect = [time, time]
// this.getDataList() this.getDataList()
this.getPdLineList() this.getPdLineList()
}, },
methods: { methods: {
@ -199,7 +199,7 @@ export default {
} }
} }
pdf.save(that.fileName[0] + '-' + that.fileName[1] + '_产线产量.pdf') pdf.save(that.fileName + '产线产量.pdf')
}) })
}, 300) }, 300)
}, },
@ -222,7 +222,7 @@ export default {
try { try {
FileSaver.saveAs(new Blob([exportTableOut], { FileSaver.saveAs(new Blob([exportTableOut], {
type: 'application/octet-stream' type: 'application/octet-stream'
}), this.fileName[0] + '-' + this.fileName[1] + '_产线产量.xlsx') }), this.fileName + '产线产量.xlsx')
} catch (e) { } catch (e) {
if (typeof console !== 'undefined') console.log(e, exportTableOut) if (typeof console !== 'undefined') console.log(e, exportTableOut)
} }
@ -265,17 +265,10 @@ export default {
this.listQuery.proLineId = val.line ? val.line : undefined; this.listQuery.proLineId = val.line ? val.line : undefined;
this.listQuery.startTime = val.timeVal ? new Date(val.timeVal[0]).getTime() : undefined; this.listQuery.startTime = val.timeVal ? new Date(val.timeVal[0]).getTime() : undefined;
this.listQuery.endTime = val.timeVal ? new Date(val.timeVal[1]).getTime() : undefined; this.listQuery.endTime = val.timeVal ? new Date(val.timeVal[1]).getTime() : undefined;
console.log('nihc 你好', val.timeVal)
if (val.timeVal && val.timeVal.length > 0) { if (val.timeVal && val.timeVal.length > 0) {
this.fileName[0] = val.timeVal[0].slice(0, 10) this.fileName = val.timeVal[0].slice(0, 10) + '-' + val.timeVal[1].slice(0, 10) + '_'
this.fileName[1] = val.timeVal[1].slice(0, 10)
this.getDataList();
} else {
this.$message({
message: '请选择时间',
type: 'warning'
});
} }
this.getDataList();
break; break;
case 'export': case 'export':
this.handleExport(); this.handleExport();

View File

@ -1,7 +1,7 @@
<!-- <!--
* @Author: Do not edit * @Author: Do not edit
* @Date: 2023-08-29 14:59:29 * @Date: 2023-08-29 14:59:29
* @LastEditTime: 2023-10-08 10:51:49 * @LastEditTime: 2023-10-12 16:35:49
* @LastEditors: DY * @LastEditors: DY
* @Description: * @Description:
--> -->
@ -129,6 +129,7 @@ export default {
tableBtn: [], tableBtn: [],
tableData: [], tableData: [],
showData: [], showData: [],
fileName: '',
formConfig: [ formConfig: [
{ {
type: 'select', type: 'select',
@ -200,6 +201,7 @@ export default {
test() { test() {
var target = document.getElementsByClassName("right-aside")[0] var target = document.getElementsByClassName("right-aside")[0]
target.style.background = '#FFFFFF' target.style.background = '#FFFFFF'
var that = this
setTimeout(() => { setTimeout(() => {
html2canvas(target).then(function(canvas) { html2canvas(target).then(function(canvas) {
var contentWidth = canvas.width var contentWidth = canvas.width
@ -235,7 +237,7 @@ export default {
} }
} }
pdf.save('工段统计自动报表.pdf') pdf.save(that.fileName + '工段统计.pdf')
}) })
}, 300) }, 300)
}, },
@ -258,7 +260,7 @@ export default {
try { try {
FileSaver.saveAs(new Blob([exportTableOut], { FileSaver.saveAs(new Blob([exportTableOut], {
type: 'application/octet-stream' type: 'application/octet-stream'
}), '工段统计自动报表.xlsx') }), this.fileName + '工段统计.xlsx')
} catch (e) { } catch (e) {
if (typeof console !== 'undefined') console.log(e, exportTableOut) if (typeof console !== 'undefined') console.log(e, exportTableOut)
} }
@ -307,6 +309,9 @@ export default {
this.listQuery.reportType = val.reportType ? val.reportType : undefined; this.listQuery.reportType = val.reportType ? val.reportType : undefined;
this.listQuery.reportStartTime = val.timeVal ? [new Date(val.timeVal[0]).getTime()] : undefined; this.listQuery.reportStartTime = val.timeVal ? [new Date(val.timeVal[0]).getTime()] : undefined;
this.listQuery.reportEndTime = val.timeVal ? [new Date(val.timeVal[1]).getTime()] : undefined; this.listQuery.reportEndTime = val.timeVal ? [new Date(val.timeVal[1]).getTime()] : undefined;
if (val.timeVal && val.timeVal.length > 0) {
this.fileName = val.timeVal[0].slice(0, 10) + '-' + val.timeVal[1].slice(0, 10) + '_'
}
this.getDataList(); this.getDataList();
break; break;
case 'export': case 'export':

View File

@ -3,6 +3,7 @@
<search-bar <search-bar
:formConfigs="formConfig" :formConfigs="formConfig"
ref="searchBarForm" ref="searchBarForm"
@select-changed="handleSearchBarChanged"
@headBtnClick="buttonClick" /> @headBtnClick="buttonClick" />
<base-table <base-table
class="right-aside" class="right-aside"
@ -110,6 +111,7 @@ export default {
param: 'proLineId', param: 'proLineId',
defaultSelect: '', defaultSelect: '',
filterable: true, filterable: true,
onchange: true,
}, },
{ {
type: 'select', type: 'select',
@ -151,9 +153,39 @@ export default {
// this.getDataList() // this.getDataList()
}, },
methods: { methods: {
/** 根据产线获取工段 */
async getWorksectionById(lineId) {
const { code, data } = await this.$axios({
url: '/base/workshop-section/listByParentId',
method: 'get',
params: {
id: lineId,
},
});
if (code == 0) {
this.formConfig[1].selectOptions = data.map((item) => {
return {
name: item.name,
id: item.id,
};
});
}
},
handleSearchBarChanged({ param, value }) {
if (!value) {
this.formConfig[1].selectOptions = [];
return;
}
switch (param) {
case 'proLineId':
this.getWorksectionById(value);
break;
}
},
test() { test() {
var target = document.getElementsByClassName("right-aside")[0] var target = document.getElementsByClassName("right-aside")[0]
target.style.background = '#FFFFFF' target.style.background = '#FFFFFF'
var that = this
setTimeout(() => { setTimeout(() => {
html2canvas(target).then(function(canvas) { html2canvas(target).then(function(canvas) {
var contentWidth = canvas.width var contentWidth = canvas.width
@ -189,7 +221,7 @@ export default {
} }
} }
pdf.save('工段统计数据查询报表.pdf') pdf.save(that.fileName[0] + '-' + that.fileName[1] + '_工段统计.pdf')
}) })
}, 300) }, 300)
}, },
@ -212,7 +244,7 @@ export default {
try { try {
FileSaver.saveAs(new Blob([exportTableOut], { FileSaver.saveAs(new Blob([exportTableOut], {
type: 'application/octet-stream' type: 'application/octet-stream'
}), '工段统计数据查询报表.xlsx') }), this.fileName[0] + '-' + this.fileName[1] + '_工段统计.xlsx')
} catch (e) { } catch (e) {
if (typeof console !== 'undefined') console.log(e, exportTableOut) if (typeof console !== 'undefined') console.log(e, exportTableOut)
} }
@ -293,10 +325,9 @@ export default {
this.listQuery.sectionId = val.sectionId ? val.sectionId : undefined this.listQuery.sectionId = val.sectionId ? val.sectionId : undefined
this.listQuery.startTime = val.timeSlot ? new Date(val.timeSlot[0]).getTime() : undefined this.listQuery.startTime = val.timeSlot ? new Date(val.timeSlot[0]).getTime() : undefined
this.listQuery.endTime = val.timeSlot ? new Date(val.timeSlot[1]).getTime() : undefined this.listQuery.endTime = val.timeSlot ? new Date(val.timeSlot[1]).getTime() : undefined
this.fileName[0] = val.timeSlot[0] if (val.timeSlot && val.timeSlot.length > 0) {
this.fileName[1] = val.timeSlot[1] this.fileName[0] = val.timeSlot[0].slice(0, 10)
console.log('wfjmmki文件名称', this.fileName) this.fileName[1] = val.timeSlot[1].slice(0, 10)
if (val.timeSlot) {
this.getDataList() this.getDataList()
} else { } else {
this.$message({ this.$message({
@ -315,7 +346,14 @@ export default {
this.getDataList(); this.getDataList();
break; break;
case 'export': case 'export':
this.handleExport(); if (val.timeSlot && val.timeSlot.length > 0) {
this.handleExport();
} else {
this.$message({
message: '请选择时间',
type: 'warning'
});
}
break; break;
default: default:
console.log(val); console.log(val);

View File

@ -97,6 +97,22 @@ export default {
trigger: 'axis', trigger: 'axis',
axisPointer: { axisPointer: {
type: 'shadow' type: 'shadow'
},
formatter: function(params) {
return (
params[0].axisValue +
`<br>` +
params.map((item) => {
let str = `<span style="display:inline-block;width:8px;height:8px;margin: 0 8px 0 -3px;border-radius:2px;background-color:${item.color};"></span>`
let seriesNameStr = `<span style="display:inline-block;">${item.seriesName}</span>`
let value = item.value ? item.value : '-'
let valueStr = `<span style="display:inline-block;margin-left:10px;color:rgba(0,0,0,0.45);">${value}</span>`
return `<span style="display:flex; justify-content:space-between; margin-bottom: 2px">
<span>${str}${seriesNameStr}</span>
<span>${valueStr}</span>
</span>`
}).join(``)
)
} }
}, },
grid: { grid: {
@ -106,7 +122,11 @@ export default {
containLabel: true containLabel: true
}, },
legend: { legend: {
data: legendData data: legendData,
right: '1%',
icon: 'rect',
itemHeight: 8,
itemWidth: 8
}, },
xAxis: { xAxis: {
type: 'category', type: 'category',

View File

@ -103,7 +103,8 @@ export default {
containLabel: true containLabel: true
}, },
legend: { legend: {
data: legendData data: legendData,
right: '1%'
}, },
xAxis: { xAxis: {
type: 'category', type: 'category',

View File

@ -425,7 +425,7 @@ export default {
} }
} }
</script> </script>
<style> <style lang='scss'>
/* 时间整点 */ /* 时间整点 */
.noneMinute .el-time-spinner__wrapper { .noneMinute .el-time-spinner__wrapper {
width: 100%; width: 100%;
@ -433,6 +433,16 @@ export default {
.noneMinute .el-scrollbar:nth-of-type(2) { .noneMinute .el-scrollbar:nth-of-type(2) {
display: none; display: none;
} }
.demo-form-inline {
.el-date-editor .el-range__icon {
font-size: 16px;
color: #0B58FF;
}
.el-input__prefix .el-icon-date {
font-size: 16px;
color: #0B58FF;
}
}
</style> </style>
<style lang="scss" scoped> <style lang="scss" scoped>
.demo-form-inline { .demo-form-inline {
@ -446,8 +456,6 @@ export default {
margin-top: 12px; margin-top: 12px;
} }
} }
</style>
<style scoped>
.searchBarBox .foldClass { .searchBarBox .foldClass {
position: absolute; position: absolute;
top: 14px; top: 14px;

View File

@ -15,7 +15,7 @@ export default {
return { return {
chartDom: '', chartDom: '',
chart: '', chart: '',
chartHeight: this.tableHeight(350) chartHeight: this.tableHeight(370)
} }
}, },
props: { props: {
@ -34,7 +34,7 @@ export default {
}, },
mounted() { mounted() {
window.addEventListener('resize', () => { window.addEventListener('resize', () => {
this.chartHeight = this.tableHeight(350) this.chartHeight = this.tableHeight(370)
}) })
}, },
methods: { methods: {
@ -86,17 +86,35 @@ export default {
} }
} }
var option = { var option = {
// title: {
// text: 'World Population'
// },
color:['#288AFF','#8EF0AB'], color:['#288AFF','#8EF0AB'],
tooltip: { tooltip: {
trigger: 'axis', trigger: 'axis',
axisPointer: { axisPointer: {
type: 'shadow' type: 'shadow'
},
formatter: function(params) {
return (
params[0].axisValue +
`<br>` +
params.map((item) => {
let str = `<span style="display:inline-block;width:8px;height:8px;margin: 0 8px 0 -3px;border-radius:2px;background-color:${item.color};"></span>`
let seriesNameStr = `<span style="display:inline-block;">${item.seriesName}</span>`
let value = item.value ? item.value : '-'
let valueStr = `<span style="display:inline-block;margin-left:10px;color:rgba(0,0,0,0.45);">${value}</span>`
return `<span style="display:flex; justify-content:space-between; margin-bottom: 2px">
<span>${str}${seriesNameStr}</span>
<span>${valueStr}</span>
</span>`
}).join(``)
)
} }
}, },
legend: {}, legend: {
right: '1%',
icon: 'rect',
itemHeight: 8,
itemWidth: 8
},
grid: { grid: {
left: '1%', left: '1%',
right: '1%', right: '1%',

View File

@ -194,13 +194,23 @@ export default {
} }
} }
</script> </script>
<style> <style lang='scss'>
/* 级联选择器 */ /* 级联选择器 */
.cascaderParent .el-cascader-panel .el-scrollbar:first-child .el-radio { .cascaderParent .el-cascader-panel .el-scrollbar:first-child .el-radio {
display: none; display: none;
} }
.demo-form-inline {
.el-date-editor .el-range__icon {
font-size: 16px;
color: #0B58FF;
}
.el-input__prefix .el-icon-date {
font-size: 16px;
color: #0B58FF;
}
}
</style> </style>
<style scoped> <style lang="scss" scoped>
.separateStyle { .separateStyle {
display: inline-block; display: inline-block;
width: 1px; width: 1px;
@ -208,8 +218,6 @@ export default {
background: #E8E8E8; background: #E8E8E8;
vertical-align: middle; vertical-align: middle;
} }
</style>
<style lang="scss" scoped>
.demo-form-inline { .demo-form-inline {
.blue-block { .blue-block {
display: inline-block; display: inline-block;

View File

@ -9,7 +9,8 @@
:table-data="list" :table-data="list"
class="qoq-out-table" class="qoq-out-table"
/> />
<div style='width: 100%;height: 300px;padding-top: 30px;'> <div class="chartTitle">环比分析图</div>
<div style='width: 100%'>
<line-chart ref="analysisLineChart" :chartData="chartData"/> <line-chart ref="analysisLineChart" :chartData="chartData"/>
</div> </div>
</div> </div>
@ -111,4 +112,21 @@ export default {
} }
} }
} }
</script> </script>
<style lang='scss' scoped>
.chartTitle {
font-size: 16px;
color: #000;
margin-top: 20px;
}
.chartTitle::before {
content: '';
display: inline-block;
width: 4px;
height: 18px;
background-color: #0B58FF;
border-radius: 1px;
margin-right: 8px;
vertical-align: bottom;
}
</style>

View File

@ -68,12 +68,6 @@ export default {
} }
var option = { var option = {
color:['#288AFF'], color:['#288AFF'],
tooltip: {
trigger: 'axis',
axisPointer: {
type: 'shadow'
}
},
grid: { grid: {
left: '4%', left: '4%',
right: '1%', right: '1%',

View File

@ -70,9 +70,9 @@ export default {
var option = { var option = {
color:['#288AFF'], color:['#288AFF'],
tooltip: { // tooltip: {
trigger: 'axis' // trigger: 'axis'
}, // },
grid: { grid: {
left: '4%', left: '4%',
right: '1%', right: '1%',

View File

@ -385,7 +385,7 @@ export default {
} }
} }
</script> </script>
<style> <style lang='scss'>
/* 级联选择器 */ /* 级联选择器 */
.cascaderParent .el-cascader-panel .el-scrollbar:first-child .el-radio { .cascaderParent .el-cascader-panel .el-scrollbar:first-child .el-radio {
display: none; display: none;
@ -397,6 +397,16 @@ export default {
.noneMinute .el-scrollbar:nth-of-type(2) { .noneMinute .el-scrollbar:nth-of-type(2) {
display: none; display: none;
} }
.demo-form-inline {
.el-date-editor .el-range__icon {
font-size: 16px;
color: #0B58FF;
}
.el-input__prefix .el-icon-date {
font-size: 16px;
color: #0B58FF;
}
}
</style> </style>
<style lang="scss" scoped> <style lang="scss" scoped>
.demo-form-inline { .demo-form-inline {
@ -410,8 +420,6 @@ export default {
margin-top: 12px; margin-top: 12px;
} }
} }
</style>
<style scoped>
.searchBarBox .foldClass { .searchBarBox .foldClass {
position: absolute; position: absolute;
top: 14px; top: 14px;

View File

@ -77,7 +77,8 @@ export default {
var option = { var option = {
color:['#FFDC94','#8EF0AB','#63BDFF','#288AFF','#7164FF','#FF6860','#FF9747','#B0EB42','#D680FF','#0043D2'], color:['#FFDC94','#8EF0AB','#63BDFF','#288AFF','#7164FF','#FF6860','#FF9747','#B0EB42','#D680FF','#0043D2'],
legend: { legend: {
data: keys data: keys,
right:'1%'
}, },
tooltip: { tooltip: {
trigger: 'axis' trigger: 'axis'

View File

@ -125,7 +125,31 @@ export default {
this.$emit('submit', this.queryParams) this.$emit('submit', this.queryParams)
}, },
exportData() { exportData() {
this.$emit('exportD') let name
if (this.queryParams.objId) {
name = this.getObjName(this.objList, this.queryParams.objId)
} else {
this.$modal.msgWarning("对象不能为空")
return false
}
this.$emit('exportD', {name: name})
},
// name
getObjName(list, id) {
let _this = this
for (let i = 0; i < list.length; i++) {
let a = list[i]
if (a.id === id) {
return a.name
} else {
if (a.children && a.children.length > 0) {
let res = _this.getObjName(a.children, id)
if (res) {
return res
}
}
}
}
}, },
transformTime(timeStamp) {// transformTime(timeStamp) {//
let year = moment(timeStamp).format('YYYY') let year = moment(timeStamp).format('YYYY')
@ -143,19 +167,20 @@ export default {
} }
} }
</script> </script>
<style> <style lang='scss'>
/* 级联选择器 */ /* 级联选择器 */
.cascaderParent .el-cascader-panel .el-scrollbar:first-child .el-radio { .cascaderParent .el-cascader-panel .el-scrollbar:first-child .el-radio {
display: none; display: none;
} }
</style> .demo-form-inline {
<style scoped> .el-date-editor .el-range__icon {
.separateStyle { font-size: 16px;
display: inline-block; color: #0B58FF;
width: 1px; }
height: 24px; .el-input__prefix .el-icon-date {
background: #E8E8E8; font-size: 16px;
vertical-align: middle; color: #0B58FF;
}
} }
</style> </style>
<style lang="scss" scoped> <style lang="scss" scoped>
@ -170,4 +195,11 @@ export default {
margin-top: 10px; margin-top: 10px;
} }
} }
.separateStyle {
display: inline-block;
width: 1px;
height: 24px;
background: #E8E8E8;
vertical-align: middle;
}
</style> </style>

View File

@ -3,6 +3,7 @@
<!-- 搜索工作栏 --> <!-- 搜索工作栏 -->
<search-area @submit="getList" @exportD="exportData"/> <search-area @submit="getList" @exportD="exportData"/>
<div v-show='chartData.length'> <div v-show='chartData.length'>
<div class="chartTitle">同比分析图</div>
<div style='width: 100%;height: 400px;'> <div style='width: 100%;height: 400px;'>
<line-chart ref="analysisLineChart" :chartData="chartData"/> <line-chart ref="analysisLineChart" :chartData="chartData"/>
</div> </div>
@ -33,12 +34,12 @@ export default {
chartData: [], chartData: [],
tableProps: [], tableProps: [],
list: [], list: [],
tableH: this.tableHeight(600) tableH: this.tableHeight(640)
} }
}, },
mounted() { mounted() {
window.addEventListener('resize', () => { window.addEventListener('resize', () => {
this.tableH = this.tableHeight(600) this.tableH = this.tableHeight(640)
}) })
}, },
methods: { methods: {
@ -99,9 +100,10 @@ export default {
} }
this.chartData = this.list this.chartData = this.list
}, },
exportData() { exportData(val) {
if (this.list.length > 0) { if (this.list.length > 0) {
var wb = XLSX.utils.table_to_book(document.querySelector(".yoy-out-table")) var wb = XLSX.utils.table_to_book(document.querySelector(".yoy-out-table"))
let fileName = val.name + "同比分析.xlsx"
var wbout = XLSX.write(wb, { var wbout = XLSX.write(wb, {
bookType: "xlsx", bookType: "xlsx",
bookSST: true, bookSST: true,
@ -110,7 +112,7 @@ export default {
try { try {
FileSaver.saveAs( FileSaver.saveAs(
new Blob([wbout], { type: "application/octet-stream" }), new Blob([wbout], { type: "application/octet-stream" }),
"同比分析.xlsx" fileName
) )
} catch (e) { } catch (e) {
if (typeof console !== "undefined") console.log(e, wbout); if (typeof console !== "undefined") console.log(e, wbout);
@ -122,4 +124,20 @@ export default {
} }
} }
} }
</script> </script>
<style lang='scss' scoped>
.chartTitle {
font-size: 16px;
color: #000;
}
.chartTitle::before {
content: '';
display: inline-block;
width: 4px;
height: 18px;
background-color: #0B58FF;
border-radius: 1px;
margin-right: 8px;
vertical-align: bottom;
}
</style>

View File

@ -130,7 +130,7 @@ export default {
this.plcTableName = data.plcTableName this.plcTableName = data.plcTableName
this.objName = data.objName this.objName = data.objName
this.getList() this.getList()
if (title === 'view') { if (title === 'detail') {
this.showBtn = false this.showBtn = false
this.tableBtn = [] this.tableBtn = []
} else { } else {

View File

@ -113,22 +113,22 @@ export default {
], ],
tableProps, tableProps,
tableBtn: [ tableBtn: [
this.$auth.hasPermi('base:energy-plc-connect:bind')
? {
type: 'connect',
btnName: '绑定'
}
: undefined,
{
type: 'detail',
btnName: '详情'
},
this.$auth.hasPermi('base:energy-plc-connect:update') this.$auth.hasPermi('base:energy-plc-connect:update')
? { ? {
type: 'edit', type: 'edit',
btnName: '编辑' btnName: '编辑'
} }
: undefined, : undefined,
{
type: 'view',
btnName: '查看'
},
this.$auth.hasPermi('base:energy-plc-connect:bind')
? {
type: 'connect',
btnName: '绑定'
}
: undefined,
this.$auth.hasPermi('base:energy-plc-connect:delete') this.$auth.hasPermi('base:energy-plc-connect:delete')
? { ? {
type: 'delete', type: 'delete',
@ -205,10 +205,10 @@ export default {
case 'delete': case 'delete':
this.handleDelete(val.data) this.handleDelete(val.data)
break break
case 'view': case 'detail':
this.paramVisible = true this.paramVisible = true
this.$nextTick(() => { this.$nextTick(() => {
this.$refs.plcParam.init(val.data, 'view') this.$refs.plcParam.init(val.data, 'detail')
}) })
break break
default: default:

View File

@ -1,54 +1,72 @@
<template> <template>
<el-form ref="form" :rules="rules" label-width="110px" :model="form"> <el-form ref="form" :rules="rules" label-width="110px" :model="form">
<el-form-item label="监控对象" prop="objectId"> <el-row>
<el-cascader <el-col :span="12">
style='width: 100%;' <el-form-item label="监控对象" prop="objectId">
v-model="objIds" <el-cascader
:options="objList" style='width: 100%;'
:props="{ checkStrictly: true, value: 'id', label: 'name' }" v-model="objIds"
popper-class="cascaderParent" :options="objList"
@change="selectObj" :props="{ checkStrictly: true, value: 'id', label: 'name' }"
clearable></el-cascader> popper-class="cascaderParent"
</el-form-item> @change="selectObj"
<el-form-item label="能源类型" prop="energyTypeId"> clearable></el-cascader>
<el-select v-model="form.energyTypeId" placeholder="请选择" style="width: 100%;" @change="toggleType"> </el-form-item>
<el-option </el-col>
v-for="item in this.energyTypeList" <el-col :span="12">
:key="item.id" <el-form-item label="能源类型" prop="energyTypeId">
:label="item.name" <el-select v-model="form.energyTypeId" placeholder="请选择" style="width: 100%;" @change="toggleType">
:value="item.id"> <el-option
</el-option> v-for="item in this.energyTypeList"
</el-select> :key="item.id"
</el-form-item> :label="item.name"
<el-form-item label="监控模式" prop="type"> :value="item.id">
<el-select v-model="form.type" placeholder="请选择" style="width: 100%;" @change="typeChange"> </el-option>
<el-option label="合并" :value= "1" ></el-option> </el-select>
<el-option label="详细" :value= "2" ></el-option> </el-form-item>
</el-select> </el-col>
</el-form-item> </el-row>
<el-form-item label="监控详细参数" prop="type" v-if="form.type === 2"> <el-row>
<el-select v-model="form.plcParamId" placeholder="请选择" style="width: 100%;" @change="selectDetail"> <el-col :span="12">
<el-option <el-form-item label="监控模式" prop="type">
v-for="item in detailList" <el-select v-model="form.type" placeholder="请选择" style="width: 100%;" @change="typeChange">
:key="item.id" <el-option label="合并" :value= "1" ></el-option>
:label="item.name" <el-option label="详细" :value= "2" ></el-option>
:value="item.id"> </el-select>
</el-option> </el-form-item>
</el-select> </el-col>
</el-form-item> <el-col :span="12">
<el-form-item label="指标类型" prop="limitType"> <el-form-item label="监控详细参数" prop="type" v-if="form.type === 2">
<el-select v-model="form.limitType" placeholder="请选择" style="width: 100%;"> <el-select v-model="form.plcParamId" placeholder="请选择" style="width: 100%;" @change="selectDetail">
<el-option <el-option
v-for="item in getDictDatas(DICT_TYPE.MONITOR_INDEX_TYPE)" v-for="item in detailList"
:key="item.value" :key="item.id"
:label="item.label" :label="item.name"
:value="item.value"> :value="item.id">
</el-option> </el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="消耗量阈值" prop="limitValue"> </el-col>
<el-input-number v-model="form.limitValue" :min="0" :max="10000000000000000" style="width: 100%;"></el-input-number> </el-row>
</el-form-item> <el-row>
<el-col :span="12">
<el-form-item label="指标类型" prop="limitType">
<el-select v-model="form.limitType" placeholder="请选择" style="width: 100%;">
<el-option
v-for="item in getDictDatas(DICT_TYPE.MONITOR_INDEX_TYPE)"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="消耗量阈值" prop="limitValue">
<el-input-number v-model="form.limitValue" :min="0" :max="10000000000000000" style="width: 100%;"></el-input-number>
</el-form-item>
</el-col>
</el-row>
</el-form> </el-form>
</template> </template>
<script> <script>

View File

@ -124,7 +124,7 @@ export default {
this.energyType = data.energyType this.energyType = data.energyType
this.energyTypeId = data.energyTypeId this.energyTypeId = data.energyTypeId
this.getList() this.getList()
if (title === 'view') { if (title === 'detail') {
this.showBtn = false this.showBtn = false
this.tableBtn = [] this.tableBtn = []
} else { } else {

View File

@ -111,22 +111,22 @@ export default {
], ],
tableProps, tableProps,
tableBtn: [ tableBtn: [
this.$auth.hasPermi('monitoring:energy-statistics:update')
? {
type: 'edit',
btnName: '编辑'
}
: undefined,
{
type: 'view',
btnName: '查看'
},
this.$auth.hasPermi('monitoring:energy-statistics:bind') this.$auth.hasPermi('monitoring:energy-statistics:bind')
? { ? {
type: 'connect', type: 'connect',
btnName: '绑定' btnName: '绑定'
} }
: undefined, : undefined,
{
type: 'detail',
btnName: '详情'
},
this.$auth.hasPermi('monitoring:energy-statistics:update')
? {
type: 'edit',
btnName: '编辑'
}
: undefined,
this.$auth.hasPermi('monitoring:energy-statistics:delete') this.$auth.hasPermi('monitoring:energy-statistics:delete')
? { ? {
type: 'delete', type: 'delete',
@ -199,9 +199,9 @@ export default {
case 'delete': case 'delete':
this.handleDelete(val.data) this.handleDelete(val.data)
break break
case 'view': case 'detail':
this.$nextTick(() => { this.$nextTick(() => {
this.$refs.plcParam.init(val.data, 'view') this.$refs.plcParam.init(val.data, 'detail')
}) })
break break
default: default:

View File

@ -37,7 +37,7 @@
@cancel="handleCancel" @cancel="handleCancel"
@confirm="handleConfirm" @confirm="handleConfirm"
:before-close="handleCancel" :before-close="handleCancel"
width='70%' width='50%'
> >
<group-class-add ref="classList" @successSubmit="successSubmit" /> <group-class-add ref="classList" @successSubmit="successSubmit" />
</base-dialog> </base-dialog>
@ -108,12 +108,6 @@ export default {
], ],
tableProps, tableProps,
tableBtn: [ tableBtn: [
this.$auth.hasPermi('base:group-classes:update')
? {
type: 'edit',
btnName: '编辑'
}
: undefined,
{ {
type: 'cancel', type: 'cancel',
btnName: '作废', btnName: '作废',
@ -128,6 +122,12 @@ export default {
] ]
} }
}, },
this.$auth.hasPermi('base:group-classes:update')
? {
type: 'edit',
btnName: '编辑'
}
: undefined,
this.$auth.hasPermi('base:group-classes:delete') this.$auth.hasPermi('base:group-classes:delete')
? { ? {
type: 'delete', type: 'delete',

View File

@ -1,17 +1,29 @@
<template> <template>
<el-form ref="form" :rules="rules" label-width="80px" :model="form"> <el-form ref="form" :rules="rules" label-width="80px" :model="form">
<el-form-item label="班组名称" prop="name"> <el-row>
<el-input v-model="form.name"></el-input> <el-col :span="12">
</el-form-item> <el-form-item label="班组名称" prop="name">
<el-form-item label="班组编码" prop="code"> <el-input v-model="form.name"></el-input>
<el-input v-model="form.code" disabled></el-input> </el-form-item>
</el-form-item> </el-col>
<el-form-item label="班组人数" prop="num"> <el-col :span="12">
<el-input-number v-model="form.num" :min="1" :max="99999999" style="width: 100%;"></el-input-number> <el-form-item label="班组编码" prop="code">
</el-form-item> <el-input v-model="form.code" disabled></el-input>
<el-form-item label="班组组长" prop="leaderName"> </el-form-item>
<el-input v-model="form.leaderName"></el-input> </el-col>
</el-form-item> </el-row>
<el-row>
<el-col :span="12">
<el-form-item label="班组人数" prop="num">
<el-input-number v-model="form.num" :min="1" :max="99999999" style="width: 100%;"></el-input-number>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="班组组长" prop="leaderName">
<el-input v-model="form.leaderName"></el-input>
</el-form-item>
</el-col>
</el-row>
</el-form> </el-form>
</template> </template>
<script> <script>

View File

@ -308,6 +308,16 @@ export default {
} }
</script> </script>
<style lang='scss'> <style lang='scss'>
.demo-form-inline {
.el-date-editor .el-range__icon {
font-size: 16px;
color: #0B58FF;
}
.el-input__prefix .el-icon-date {
font-size: 16px;
color: #0B58FF;
}
}
.groupTeamScheduling { .groupTeamScheduling {
background-color: #F2F4F9; background-color: #F2F4F9;
.operationArea { .operationArea {

11832
yarn.lock Normal file

File diff suppressed because it is too large Load Diff