projects/mesxc-zhp #161
@@ -142,6 +142,9 @@ function findMaxLabelWidth(rows) {
 | 
				
			|||||||
			if (!opt.label) return 0;
 | 
								if (!opt.label) return 0;
 | 
				
			||||||
			if (opt.label.length > max) {
 | 
								if (opt.label.length > max) {
 | 
				
			||||||
				max = opt.label.length;
 | 
									max = opt.label.length;
 | 
				
			||||||
 | 
									if (opt.label.includes('(')) {
 | 
				
			||||||
 | 
										max = max - 3
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		});
 | 
							});
 | 
				
			||||||
	});
 | 
						});
 | 
				
			||||||
@@ -239,7 +242,7 @@ export default {
 | 
				
			|||||||
		size: {
 | 
							size: {
 | 
				
			||||||
			type: String,
 | 
								type: String,
 | 
				
			||||||
			default: '',
 | 
								default: '',
 | 
				
			||||||
		},
 | 
							}
 | 
				
			||||||
	},
 | 
						},
 | 
				
			||||||
	data() {
 | 
						data() {
 | 
				
			||||||
		return {
 | 
							return {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -83,7 +83,7 @@ export default {
 | 
				
			|||||||
					],
 | 
										],
 | 
				
			||||||
				},
 | 
									},
 | 
				
			||||||
				placeholder: '请输入内容',
 | 
									placeholder: '请输入内容',
 | 
				
			||||||
				readOnly: true,
 | 
									// readOnly: false,
 | 
				
			||||||
			},
 | 
								},
 | 
				
			||||||
		};
 | 
							};
 | 
				
			||||||
	},
 | 
						},
 | 
				
			||||||
@@ -123,11 +123,13 @@ export default {
 | 
				
			|||||||
			const editor = this.$refs.editor;
 | 
								const editor = this.$refs.editor;
 | 
				
			||||||
			this.Quill = new Quill(editor, this.options);
 | 
								this.Quill = new Quill(editor, this.options);
 | 
				
			||||||
			// 取消自动聚焦 start
 | 
								// 取消自动聚焦 start
 | 
				
			||||||
 | 
								this.Quill?.enable(false);
 | 
				
			||||||
			this.$nextTick(() => {
 | 
								this.$nextTick(() => {
 | 
				
			||||||
 | 
									this.Quill?.enable(true);
 | 
				
			||||||
				this.Quill?.blur();
 | 
									this.Quill?.blur();
 | 
				
			||||||
				if (!this.readOnly) {
 | 
									// if (!this.readOnly) {
 | 
				
			||||||
					this.Quill?.enable();
 | 
									// 	this.Quill?.enable();
 | 
				
			||||||
				}
 | 
									// }
 | 
				
			||||||
			});
 | 
								});
 | 
				
			||||||
			// 如果设置了上传地址则自定义图片上传事件
 | 
								// 如果设置了上传地址则自定义图片上传事件
 | 
				
			||||||
			if (this.type === 'url') {
 | 
								if (this.type === 'url') {
 | 
				
			||||||
@@ -196,7 +198,7 @@ export default {
 | 
				
			|||||||
};
 | 
					};
 | 
				
			||||||
</script>
 | 
					</script>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<style>
 | 
					<style lang="scss" scoped>
 | 
				
			||||||
.editor-wrapper {
 | 
					.editor-wrapper {
 | 
				
			||||||
	position: relative;
 | 
						position: relative;
 | 
				
			||||||
  cursor: not-allowed;
 | 
					  cursor: not-allowed;
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										228
									
								
								src/views/core/analysis/balanceAnalysis/chart.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										228
									
								
								src/views/core/analysis/balanceAnalysis/chart.vue
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,228 @@
 | 
				
			|||||||
 | 
					<!-- 
 | 
				
			||||||
 | 
					    filename: chart.vue
 | 
				
			||||||
 | 
					    author: liubin
 | 
				
			||||||
 | 
					    date: 2023-11-29 09:03:01
 | 
				
			||||||
 | 
					    description: 
 | 
				
			||||||
 | 
					-->
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<template>
 | 
				
			||||||
 | 
						<div class="analysis-chart">
 | 
				
			||||||
 | 
							<!-- tt ct 选择  -->
 | 
				
			||||||
 | 
							<el-button
 | 
				
			||||||
 | 
								v-for="(item, index) in ['设备CT', '设备TT', '产线CT', '产线TT']"
 | 
				
			||||||
 | 
								:key="index"
 | 
				
			||||||
 | 
								:class="[index == activeIndex ? 'activeButton' : '']"
 | 
				
			||||||
 | 
								@click="activeIndex = index">
 | 
				
			||||||
 | 
								{{ item }}
 | 
				
			||||||
 | 
							</el-button>
 | 
				
			||||||
 | 
							<!-- chart  -->
 | 
				
			||||||
 | 
							<div id="chart" ref="chartDiv" class="chart" style="margin-top: 12px" />
 | 
				
			||||||
 | 
						</div>
 | 
				
			||||||
 | 
					</template>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<script>
 | 
				
			||||||
 | 
					import * as echarts from 'echarts';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export default {
 | 
				
			||||||
 | 
						name: 'AnalysisChart',
 | 
				
			||||||
 | 
						components: {},
 | 
				
			||||||
 | 
						props: ['daterange', 'tableData'],
 | 
				
			||||||
 | 
						data() {
 | 
				
			||||||
 | 
							return {
 | 
				
			||||||
 | 
								activeIndex: 0,
 | 
				
			||||||
 | 
								chart: null,
 | 
				
			||||||
 | 
								templateOption: {
 | 
				
			||||||
 | 
									tooltip: {
 | 
				
			||||||
 | 
										trigger: 'axis',
 | 
				
			||||||
 | 
									},
 | 
				
			||||||
 | 
									legend: {
 | 
				
			||||||
 | 
										icon: 'roundRect',
 | 
				
			||||||
 | 
										itemWidth: 12,
 | 
				
			||||||
 | 
										itemHeight: 12,
 | 
				
			||||||
 | 
									},
 | 
				
			||||||
 | 
									grid: {
 | 
				
			||||||
 | 
										top: '12%',
 | 
				
			||||||
 | 
										left: '6%',
 | 
				
			||||||
 | 
										right: '6%',
 | 
				
			||||||
 | 
										bottom: '12%',
 | 
				
			||||||
 | 
									},
 | 
				
			||||||
 | 
									xAxis: {
 | 
				
			||||||
 | 
										name: '时间',
 | 
				
			||||||
 | 
										axisLabel: {
 | 
				
			||||||
 | 
											margin: 12,
 | 
				
			||||||
 | 
											rotate: -8,
 | 
				
			||||||
 | 
										},
 | 
				
			||||||
 | 
										axisTicks: {
 | 
				
			||||||
 | 
											show: false,
 | 
				
			||||||
 | 
										},
 | 
				
			||||||
 | 
										data: this.daterange || [
 | 
				
			||||||
 | 
											'2020-01-02',
 | 
				
			||||||
 | 
											'2020-02-02',
 | 
				
			||||||
 | 
											'2020-03-02',
 | 
				
			||||||
 | 
											'2020-04-02',
 | 
				
			||||||
 | 
										],
 | 
				
			||||||
 | 
									},
 | 
				
			||||||
 | 
									yAxis: {
 | 
				
			||||||
 | 
										name: ['设备CT', '设备TT', '产线CT', '产线TT'][this.activeIndex],
 | 
				
			||||||
 | 
										nameLocation: 'end',
 | 
				
			||||||
 | 
										nameGap: 28,
 | 
				
			||||||
 | 
										nameTextStyle: {
 | 
				
			||||||
 | 
											fontSize: 14,
 | 
				
			||||||
 | 
											align: 'right',
 | 
				
			||||||
 | 
										},
 | 
				
			||||||
 | 
										axisLine: {
 | 
				
			||||||
 | 
											show: true,
 | 
				
			||||||
 | 
											lineStyle: {
 | 
				
			||||||
 | 
												color: '#333',
 | 
				
			||||||
 | 
												opacity: 0.6,
 | 
				
			||||||
 | 
											},
 | 
				
			||||||
 | 
										},
 | 
				
			||||||
 | 
									},
 | 
				
			||||||
 | 
									series: [
 | 
				
			||||||
 | 
										{
 | 
				
			||||||
 | 
											name: 'der Hund',
 | 
				
			||||||
 | 
											type: 'line',
 | 
				
			||||||
 | 
											data: [15, undefined, 36, 11],
 | 
				
			||||||
 | 
										},
 | 
				
			||||||
 | 
										{
 | 
				
			||||||
 | 
											name: 'die Katze',
 | 
				
			||||||
 | 
											type: 'line',
 | 
				
			||||||
 | 
											data: [5, 2, 6, 3],
 | 
				
			||||||
 | 
										},
 | 
				
			||||||
 | 
										{
 | 
				
			||||||
 | 
											name: 'die Maus',
 | 
				
			||||||
 | 
											type: 'line',
 | 
				
			||||||
 | 
											data: [11, 12, 13, 10],
 | 
				
			||||||
 | 
										},
 | 
				
			||||||
 | 
									],
 | 
				
			||||||
 | 
								},
 | 
				
			||||||
 | 
							};
 | 
				
			||||||
 | 
						},
 | 
				
			||||||
 | 
						mounted() {
 | 
				
			||||||
 | 
							this.initChart();
 | 
				
			||||||
 | 
						},
 | 
				
			||||||
 | 
						deactivated() {},
 | 
				
			||||||
 | 
						watch: {
 | 
				
			||||||
 | 
							activeIndex(val) {
 | 
				
			||||||
 | 
								this.initChart(val);
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
						},
 | 
				
			||||||
 | 
						methods: {
 | 
				
			||||||
 | 
							/**
 | 
				
			||||||
 | 
							 *
 | 
				
			||||||
 | 
							 * @param {object} row 表格的每一列
 | 
				
			||||||
 | 
							 * @param {string} key 表格列prop的后缀
 | 
				
			||||||
 | 
							 */
 | 
				
			||||||
 | 
							getListFromTableRow(row, key = '_eq_ct') {
 | 
				
			||||||
 | 
								const list = [];
 | 
				
			||||||
 | 
								for (const prop of Object.keys(row).sort()) {
 | 
				
			||||||
 | 
									if (prop.endsWith(key)) {
 | 
				
			||||||
 | 
										list.push(row[prop]);
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
								return list;
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
							/** 初始化/设置 图表 */
 | 
				
			||||||
 | 
							initChart(val) {
 | 
				
			||||||
 | 
								console.log('tableData', this.tableData);
 | 
				
			||||||
 | 
								if (!this.chart) this.chart = echarts.init(this.$refs.chartDiv);
 | 
				
			||||||
 | 
								switch (val) {
 | 
				
			||||||
 | 
									case 0:
 | 
				
			||||||
 | 
										const eqCt = this.tableData.map((row) => ({
 | 
				
			||||||
 | 
											name: row.equName,
 | 
				
			||||||
 | 
											type: 'line',
 | 
				
			||||||
 | 
											symbol: 'circle',
 | 
				
			||||||
 | 
											symbolSize: 8,
 | 
				
			||||||
 | 
											data: this.getListFromTableRow(row, '_eq_ct'),
 | 
				
			||||||
 | 
										}));
 | 
				
			||||||
 | 
										this.chart.setOption({
 | 
				
			||||||
 | 
											...this.templateOption,
 | 
				
			||||||
 | 
											yAxis: { ...this.templateOption.yAxis, name: '设备CT' },
 | 
				
			||||||
 | 
											series: eqCt,
 | 
				
			||||||
 | 
										});
 | 
				
			||||||
 | 
										break;
 | 
				
			||||||
 | 
									case 1:
 | 
				
			||||||
 | 
										const eqTt = this.tableData.map((row) => ({
 | 
				
			||||||
 | 
											name: row.equName,
 | 
				
			||||||
 | 
											type: 'line',
 | 
				
			||||||
 | 
											symbol: 'circle',
 | 
				
			||||||
 | 
											symbolSize: 8,
 | 
				
			||||||
 | 
											data: this.getListFromTableRow(row, '_eq_tt'),
 | 
				
			||||||
 | 
										}));
 | 
				
			||||||
 | 
										this.chart.setOption({
 | 
				
			||||||
 | 
											...this.templateOption,
 | 
				
			||||||
 | 
											yAxis: { ...this.templateOption.yAxis, name: '设备TT' },
 | 
				
			||||||
 | 
											series: eqTt,
 | 
				
			||||||
 | 
										});
 | 
				
			||||||
 | 
										break;
 | 
				
			||||||
 | 
									case 2:
 | 
				
			||||||
 | 
										const plCt = this.tableData.map((row) => ({
 | 
				
			||||||
 | 
											name: row.equName,
 | 
				
			||||||
 | 
											type: 'line',
 | 
				
			||||||
 | 
											symbol: 'circle',
 | 
				
			||||||
 | 
											symbolSize: 8,
 | 
				
			||||||
 | 
											data: this.getListFromTableRow(row, '_pl_ct'),
 | 
				
			||||||
 | 
										}));
 | 
				
			||||||
 | 
										this.chart.setOption({
 | 
				
			||||||
 | 
											...this.templateOption,
 | 
				
			||||||
 | 
											yAxis: { ...this.templateOption.yAxis, name: '产线CT' },
 | 
				
			||||||
 | 
											series: plCt,
 | 
				
			||||||
 | 
										});
 | 
				
			||||||
 | 
										break;
 | 
				
			||||||
 | 
									case 3:
 | 
				
			||||||
 | 
										const plTt = this.tableData.map((row) => ({
 | 
				
			||||||
 | 
											name: row.equName,
 | 
				
			||||||
 | 
											type: 'line',
 | 
				
			||||||
 | 
											symbol: 'circle',
 | 
				
			||||||
 | 
											symbolSize: 8,
 | 
				
			||||||
 | 
											data: this.getListFromTableRow(row, '_pl_tt'),
 | 
				
			||||||
 | 
										}));
 | 
				
			||||||
 | 
										this.chart.setOption({
 | 
				
			||||||
 | 
											...this.templateOption,
 | 
				
			||||||
 | 
											yAxis: { ...this.templateOption.yAxis, name: '产线TT' },
 | 
				
			||||||
 | 
											series: plTt,
 | 
				
			||||||
 | 
										});
 | 
				
			||||||
 | 
										break;
 | 
				
			||||||
 | 
									default:
 | 
				
			||||||
 | 
										const eqCt2 = this.tableData.map((row) => ({
 | 
				
			||||||
 | 
											name: row.equName,
 | 
				
			||||||
 | 
											type: 'line',
 | 
				
			||||||
 | 
											symbol: 'circle',
 | 
				
			||||||
 | 
											symbolSize: 8,
 | 
				
			||||||
 | 
											data: this.getListFromTableRow(row, '_eq_ct'),
 | 
				
			||||||
 | 
										}));
 | 
				
			||||||
 | 
										this.chart.setOption({
 | 
				
			||||||
 | 
											...this.templateOption,
 | 
				
			||||||
 | 
											yAxis: { ...this.templateOption.yAxis, name: '设备CT' },
 | 
				
			||||||
 | 
											series: eqCt2,
 | 
				
			||||||
 | 
										});
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
						},
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					</script>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<style scoped>
 | 
				
			||||||
 | 
					.analysis-chart {
 | 
				
			||||||
 | 
						width: 100%;
 | 
				
			||||||
 | 
						height: 100%;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.analysis-chart >>> .el-button {
 | 
				
			||||||
 | 
						background: #f1f1f1;
 | 
				
			||||||
 | 
						color: #333;
 | 
				
			||||||
 | 
						transition: all 0.3s;
 | 
				
			||||||
 | 
						border: none;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						&.activeButton,
 | 
				
			||||||
 | 
						&:hover {
 | 
				
			||||||
 | 
							background: #0b58ff;
 | 
				
			||||||
 | 
							color: #fff;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#chart {
 | 
				
			||||||
 | 
						height: 100%;
 | 
				
			||||||
 | 
						/* background: #ccc; */
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					</style>
 | 
				
			||||||
@@ -1,51 +1,56 @@
 | 
				
			|||||||
<template>
 | 
					<template>
 | 
				
			||||||
	<div class="app-container">
 | 
						<div class="app-container" style="flex: 1; height: 1px">
 | 
				
			||||||
		<search-bar
 | 
							<search-bar
 | 
				
			||||||
			:formConfigs="formConfig"
 | 
								:formConfigs="formConfig"
 | 
				
			||||||
			ref="searchBarForm"
 | 
								ref="searchBarForm"
 | 
				
			||||||
			@headBtnClick="handleSearchBarBtnClick" />
 | 
								@headBtnClick="handleSearchBarBtnClick" />
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		<!-- <div v-if="tableData.length"> -->
 | 
							<!-- <div v-if="tableData.length"> -->
 | 
				
			||||||
		<el-tabs
 | 
							<div class="custom-tabs" style="">
 | 
				
			||||||
			v-model="activeName"
 | 
								<el-tabs
 | 
				
			||||||
			@tab-click="handleTabClick"
 | 
									v-model="activeName"
 | 
				
			||||||
			style="height: 100%">
 | 
									@tab-click="handleTabClick"
 | 
				
			||||||
			<el-tab-pane :label="'\u2002数据列表\u2002'" name="table">
 | 
									style="height: 100%">
 | 
				
			||||||
				<!-- @emitFun="handleEmitFun"> -->
 | 
									<el-tab-pane :label="'\u2002数据列表\u2002'" name="table">
 | 
				
			||||||
				<base-table
 | 
										<base-table
 | 
				
			||||||
					v-if="activeName == 'table'"
 | 
											v-if="activeName == 'table' && ready"
 | 
				
			||||||
					:span-method="mergeColumnHandler"
 | 
											:span-method="mergeRow"
 | 
				
			||||||
					:page="1"
 | 
											:page="1"
 | 
				
			||||||
					:limit="999"
 | 
											:limit="999"
 | 
				
			||||||
					:table-props="tableProps"
 | 
											:table-props="tableProps"
 | 
				
			||||||
					:table-data="tableData" />
 | 
											:table-data="tableData" />
 | 
				
			||||||
			</el-tab-pane>
 | 
										<div v-if="tableData.length == 0" class="no-data-bg"></div>
 | 
				
			||||||
			<el-tab-pane :label="'\u3000产线平衡分析图\u3000'" name="graph">
 | 
									</el-tab-pane>
 | 
				
			||||||
				<div class="graph" style="height: 100%">
 | 
									<el-tab-pane :label="'\u3000产线平衡分析图\u3000'" name="graph">
 | 
				
			||||||
					<!-- graph  -->
 | 
										<div class="graph" style="height: 800px">
 | 
				
			||||||
					<!-- <Graph
 | 
											<!-- graph  -->
 | 
				
			||||||
 | 
											<AnalysisChart
 | 
				
			||||||
 | 
												v-if="activeName == 'graph'"
 | 
				
			||||||
 | 
												:table-data="tableData"
 | 
				
			||||||
 | 
												:daterange="dateArr"></AnalysisChart>
 | 
				
			||||||
 | 
											<!-- <div v-else class="no-data-bg"></div> -->
 | 
				
			||||||
 | 
											<!-- <Graph
 | 
				
			||||||
										v-if="list.length"
 | 
															v-if="list.length"
 | 
				
			||||||
										:equipment-list="list"
 | 
															:equipment-list="list"
 | 
				
			||||||
										:render="renderKey" /> -->
 | 
															:render="renderKey" /> -->
 | 
				
			||||||
					<!-- <BalanceChart ref="lineChart" /> -->
 | 
											<!-- <BalanceChart ref="lineChart" /> -->
 | 
				
			||||||
					<div v-if="list.length == 0" class="no-data-bg"></div>
 | 
											<!-- <div v-if="list.length == 0" class="no-data-bg"></div> -->
 | 
				
			||||||
				</div>
 | 
										</div>
 | 
				
			||||||
			</el-tab-pane>
 | 
									</el-tab-pane>
 | 
				
			||||||
		</el-tabs>
 | 
								</el-tabs>
 | 
				
			||||||
 | 
							</div>
 | 
				
			||||||
		<!-- <SearchBar :formConfigs="[{ label: '产线平衡分析图', type: 'title' }]" /> -->
 | 
					 | 
				
			||||||
		<!-- </div>
 | 
					 | 
				
			||||||
		<div v-else class="no-data-bg"></div> -->
 | 
					 | 
				
			||||||
	</div>
 | 
						</div>
 | 
				
			||||||
</template>
 | 
					</template>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<script>
 | 
					<script>
 | 
				
			||||||
import BalanceChart from '../balanceChart';
 | 
					import BalanceChart from '../balanceChart';
 | 
				
			||||||
import basicPageMixin from '@/mixins/lb/basicPageMixin';
 | 
					import basicPageMixin from '@/mixins/lb/basicPageMixin';
 | 
				
			||||||
 | 
					import AnalysisChart from './chart.vue';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export default {
 | 
					export default {
 | 
				
			||||||
	components: {
 | 
						components: {
 | 
				
			||||||
		BalanceChart,
 | 
							BalanceChart,
 | 
				
			||||||
 | 
							AnalysisChart,
 | 
				
			||||||
	},
 | 
						},
 | 
				
			||||||
	mixins: [basicPageMixin],
 | 
						mixins: [basicPageMixin],
 | 
				
			||||||
	data() {
 | 
						data() {
 | 
				
			||||||
@@ -98,6 +103,13 @@ export default {
 | 
				
			|||||||
				startTime: null,
 | 
									startTime: null,
 | 
				
			||||||
				endTime: null,
 | 
									endTime: null,
 | 
				
			||||||
			},
 | 
								},
 | 
				
			||||||
 | 
								sectionMap: {},
 | 
				
			||||||
 | 
								lastSection: null,
 | 
				
			||||||
 | 
								currRowIndex: 0,
 | 
				
			||||||
 | 
								spanArr: [],
 | 
				
			||||||
 | 
								// 保存时间列表
 | 
				
			||||||
 | 
								dateArr: [],
 | 
				
			||||||
 | 
								ready: false,
 | 
				
			||||||
		};
 | 
							};
 | 
				
			||||||
	},
 | 
						},
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -156,11 +168,19 @@ export default {
 | 
				
			|||||||
			const { data, nameData } = await this.getCT();
 | 
								const { data, nameData } = await this.getCT();
 | 
				
			||||||
			await this.buildProps(nameData);
 | 
								await this.buildProps(nameData);
 | 
				
			||||||
			await this.buildTableData(data);
 | 
								await this.buildTableData(data);
 | 
				
			||||||
			const xxxx = this.tableData;
 | 
								this.tableData = this.tableData.sort((a, b) => {
 | 
				
			||||||
			debugger;
 | 
									if (a.sectionName < b.sectionName) return -1;
 | 
				
			||||||
 | 
									return 1;
 | 
				
			||||||
 | 
								});
 | 
				
			||||||
 | 
								// const p = this.tableProps
 | 
				
			||||||
 | 
								// const d = this.tableData
 | 
				
			||||||
 | 
								// debugger;
 | 
				
			||||||
 | 
								this.ready = true;
 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		buildProps(nameData) {
 | 
							buildProps(nameData) {
 | 
				
			||||||
 | 
								this.initTableProps();
 | 
				
			||||||
 | 
								this.dateArr = [];
 | 
				
			||||||
			return new Promise((resolve, reject) => {
 | 
								return new Promise((resolve, reject) => {
 | 
				
			||||||
				try {
 | 
									try {
 | 
				
			||||||
					const dateArr = Array.from(
 | 
										const dateArr = Array.from(
 | 
				
			||||||
@@ -199,7 +219,7 @@ export default {
 | 
				
			|||||||
							],
 | 
												],
 | 
				
			||||||
						});
 | 
											});
 | 
				
			||||||
					});
 | 
										});
 | 
				
			||||||
 | 
										this.dateArr = dateArr;
 | 
				
			||||||
					resolve();
 | 
										resolve();
 | 
				
			||||||
				} catch (err) {
 | 
									} catch (err) {
 | 
				
			||||||
					reject(err);
 | 
										reject(err);
 | 
				
			||||||
@@ -208,38 +228,68 @@ export default {
 | 
				
			|||||||
		},
 | 
							},
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		async buildTableData(data) {
 | 
							async buildTableData(data) {
 | 
				
			||||||
			/** 处理 工段 分组  */
 | 
								this.tableData = [];
 | 
				
			||||||
			const sectionList = data.map((item) => {});
 | 
								const sectionArr = Array.from(
 | 
				
			||||||
		},
 | 
									new Set(data.map((item) => item.sectionName))
 | 
				
			||||||
 | 
								).sort();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		setRowSpan(arr) {
 | 
								const sectionMap = sectionArr.reduce(
 | 
				
			||||||
			let count = 0;
 | 
									(sum, curr) => ({ ...sum, [curr]: 0 }),
 | 
				
			||||||
			arr.forEach((item, index) => {
 | 
									{}
 | 
				
			||||||
				if (index === 0) {
 | 
								);
 | 
				
			||||||
					this.spanArr.push(1);
 | 
					
 | 
				
			||||||
				} else {
 | 
								console.log('sectionArr', sectionArr);
 | 
				
			||||||
					if (item === arr[index - 1]) {
 | 
								console.log('sectionMap', sectionMap);
 | 
				
			||||||
						this.spanArr[count] += 1;
 | 
								let spanArr = Array.from(sectionArr, () => 0);
 | 
				
			||||||
						this.spanArr.push(0);
 | 
					
 | 
				
			||||||
					} else {
 | 
								return new Promise((resolve, reject) => {
 | 
				
			||||||
						count = index;
 | 
									/** 处理 工段 分组  */
 | 
				
			||||||
						this.spanArr.push(1);
 | 
									data.map((item) => {
 | 
				
			||||||
					}
 | 
										sectionMap[item.sectionName]++;
 | 
				
			||||||
 | 
										/** 处理 设备  */
 | 
				
			||||||
 | 
										const row = {
 | 
				
			||||||
 | 
											equName: item.equName,
 | 
				
			||||||
 | 
											sectionName: item.sectionName,
 | 
				
			||||||
 | 
										};
 | 
				
			||||||
 | 
										item.data.forEach((eq) => {
 | 
				
			||||||
 | 
											const date = eq.dynamicName;
 | 
				
			||||||
 | 
											eq.children.forEach((sub) => {
 | 
				
			||||||
 | 
												if (sub.dynamicName == '设备CT')
 | 
				
			||||||
 | 
													row[date + '_eq_ct'] = sub.dynamicValue;
 | 
				
			||||||
 | 
												if (sub.dynamicName == '设备TT')
 | 
				
			||||||
 | 
													row[date + '_eq_tt'] = sub.dynamicValue;
 | 
				
			||||||
 | 
												if (sub.dynamicName == '产线CT')
 | 
				
			||||||
 | 
													row[date + '_pl_ct'] = sub.dynamicValue;
 | 
				
			||||||
 | 
												if (sub.dynamicName == '产线TT')
 | 
				
			||||||
 | 
													row[date + '_pl_tt'] = sub.dynamicValue;
 | 
				
			||||||
 | 
											});
 | 
				
			||||||
 | 
										});
 | 
				
			||||||
 | 
										this.tableData.push(row);
 | 
				
			||||||
 | 
									});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									/** 生成span数组 */
 | 
				
			||||||
 | 
									const tmp = [...spanArr];
 | 
				
			||||||
 | 
									for (const [index, key] of sectionArr.entries()) {
 | 
				
			||||||
 | 
										tmp[index + 1] = tmp[index] + sectionMap[key];
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									console.log('tep', tmp);
 | 
				
			||||||
 | 
									spanArr = tmp;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									this.sectionMap = sectionMap;
 | 
				
			||||||
 | 
									this.spanArr = spanArr;
 | 
				
			||||||
 | 
									resolve();
 | 
				
			||||||
			});
 | 
								});
 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		/** 合并table列的规则 */
 | 
							mergeRow({ row, column, rowIndex, columnIndex }) {
 | 
				
			||||||
		mergeColumnHandler({ row, column, rowIndex, columnIndex }) {
 | 
								if (columnIndex == 1) {
 | 
				
			||||||
			if (columnIndex == 0) {
 | 
									const span = this.sectionMap[row.sectionName];
 | 
				
			||||||
				if (this.spanArr[rowIndex]) {
 | 
									if (this.spanArr.includes(rowIndex)) {
 | 
				
			||||||
					return [
 | 
										console.log('span...');
 | 
				
			||||||
						this.spanArr[rowIndex], // row span
 | 
										return [span, 1];
 | 
				
			||||||
						1, // col span
 | 
					 | 
				
			||||||
					];
 | 
					 | 
				
			||||||
				} else {
 | 
					 | 
				
			||||||
					return [0, 0];
 | 
					 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
 | 
									return [0, 0];
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -319,6 +369,7 @@ export default {
 | 
				
			|||||||
				// this.dataListLoading = false;
 | 
									// this.dataListLoading = false;
 | 
				
			||||||
			});
 | 
								});
 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		handleSearchBarBtnClick(btn) {
 | 
							handleSearchBarBtnClick(btn) {
 | 
				
			||||||
			switch (btn.btnName) {
 | 
								switch (btn.btnName) {
 | 
				
			||||||
				case 'search':
 | 
									case 'search':
 | 
				
			||||||
@@ -381,3 +432,23 @@ export default {
 | 
				
			|||||||
	},
 | 
						},
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
</script>
 | 
					</script>
 | 
				
			||||||
 | 
					<style scoped>
 | 
				
			||||||
 | 
					.custom-tabs >>> .el-tabs__header {
 | 
				
			||||||
 | 
						margin-bottom: 8px;
 | 
				
			||||||
 | 
						display: inline-block;
 | 
				
			||||||
 | 
						transform: translateY(-12px);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.custom-tabs >>> .el-tabs__item {
 | 
				
			||||||
 | 
						padding-left: 0px !important;
 | 
				
			||||||
 | 
						padding-right: 0px !important;
 | 
				
			||||||
 | 
						line-height: 36px !important;
 | 
				
			||||||
 | 
						height: 36px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.custom-tabs >>> .el-tabs__content {
 | 
				
			||||||
 | 
						height: calc(100% - 42px);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.custom-tabs >>> .el-tab-pane {
 | 
				
			||||||
 | 
						height: 100%;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					</style>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -63,7 +63,7 @@ const tableProps = [
 | 
				
			|||||||
  }
 | 
					  }
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
export default {
 | 
					export default {
 | 
				
			||||||
  name: "EnergyPlc",
 | 
					  name: "EnergyQuantityRealtime",
 | 
				
			||||||
  data() {
 | 
					  data() {
 | 
				
			||||||
    return {
 | 
					    return {
 | 
				
			||||||
      formConfig: [
 | 
					      formConfig: [
 | 
				
			||||||
@@ -125,10 +125,34 @@ export default {
 | 
				
			|||||||
    window.addEventListener('resize', () => {
 | 
					    window.addEventListener('resize', () => {
 | 
				
			||||||
      this.tableH = this.tableHeight(260)
 | 
					      this.tableH = this.tableHeight(260)
 | 
				
			||||||
    })
 | 
					    })
 | 
				
			||||||
 | 
					    if (location.href.indexOf('?') > 0) {
 | 
				
			||||||
 | 
					      let arr = location.href.split('?')[1].split('&')
 | 
				
			||||||
 | 
					      this.formConfig[1].defaultSelect = [arr[0].split('=')[1], arr[1].split('=')[1]]
 | 
				
			||||||
 | 
					    } else {
 | 
				
			||||||
 | 
					      this.formConfig[1].defaultSelect = [Date.now() - 7*24*3600000, Date.now()]
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    this.queryParams.startTime = this.formConfig[1].defaultSelect[0]
 | 
				
			||||||
 | 
					    this.queryParams.endTime = this.formConfig[1].defaultSelect[1]
 | 
				
			||||||
    this.getList();
 | 
					    this.getList();
 | 
				
			||||||
    this.getTypeList()
 | 
					    this.getTypeList()
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
 | 
					  watch: {
 | 
				
			||||||
 | 
					    $route: 'initData'
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
  methods: {
 | 
					  methods: {
 | 
				
			||||||
 | 
					    initData(to) {
 | 
				
			||||||
 | 
					      if (to.name === 'EnergyQuantityRealtime') {
 | 
				
			||||||
 | 
					        if (location.href.indexOf('?') > 0) {
 | 
				
			||||||
 | 
					          let arr = location.href.split('?')[1].split('&')
 | 
				
			||||||
 | 
					          this.formConfig[1].defaultSelect = [arr[0].split('=')[1], arr[1].split('=')[1]]
 | 
				
			||||||
 | 
					        } else {
 | 
				
			||||||
 | 
					          this.formConfig[1].defaultSelect = [Date.now() - 7*24*3600000, Date.now()]
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        this.queryParams.startTime = this.formConfig[1].defaultSelect[0]
 | 
				
			||||||
 | 
					        this.queryParams.endTime = this.formConfig[1].defaultSelect[1]
 | 
				
			||||||
 | 
					        this.getList()
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
    buttonClick(val) {
 | 
					    buttonClick(val) {
 | 
				
			||||||
      this.queryParams.pageNo = 1;
 | 
					      this.queryParams.pageNo = 1;
 | 
				
			||||||
      this.queryParams.energyTypeId = val.energyTypeId
 | 
					      this.queryParams.energyTypeId = val.energyTypeId
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -80,8 +80,7 @@ export default {
 | 
				
			|||||||
          param: 'timeVal',
 | 
					          param: 'timeVal',
 | 
				
			||||||
          defaultSelect: [],
 | 
					          defaultSelect: [],
 | 
				
			||||||
          width: 350,
 | 
					          width: 350,
 | 
				
			||||||
          clearable: false,
 | 
					          clearable: false
 | 
				
			||||||
          required:true
 | 
					 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
          type: 'button',
 | 
					          type: 'button',
 | 
				
			||||||
@@ -122,35 +121,11 @@ export default {
 | 
				
			|||||||
      this.tableH = this.tableHeight(260)
 | 
					      this.tableH = this.tableHeight(260)
 | 
				
			||||||
      this.isFold = this.searchBarWidth('energyReportSearchBox', 1180)
 | 
					      this.isFold = this.searchBarWidth('energyReportSearchBox', 1180)
 | 
				
			||||||
    })
 | 
					    })
 | 
				
			||||||
    if (location.href.indexOf('?') > 0) {
 | 
					 | 
				
			||||||
      let arr = location.href.split('?')[1].split('&')
 | 
					 | 
				
			||||||
      this.formConfig[2].defaultSelect = [arr[0].split('=')[1], arr[1].split('=')[1]]
 | 
					 | 
				
			||||||
    } else {
 | 
					 | 
				
			||||||
      this.formConfig[2].defaultSelect = [Date.now() - 7*24*3600000, Date.now()]
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    this.queryParams.startTime = this.formConfig[2].defaultSelect[0]
 | 
					 | 
				
			||||||
    this.queryParams.endTime = this.formConfig[2].defaultSelect[1]
 | 
					 | 
				
			||||||
    this.getList()
 | 
					    this.getList()
 | 
				
			||||||
    this.getTypeList()
 | 
					    this.getTypeList()
 | 
				
			||||||
    this.isFold = this.searchBarWidth('energyReportSearchBox', 1180)
 | 
					    this.isFold = this.searchBarWidth('energyReportSearchBox', 1180)
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  watch: {
 | 
					 | 
				
			||||||
    $route: 'initData'
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
  methods: {
 | 
					  methods: {
 | 
				
			||||||
    initData(to) {
 | 
					 | 
				
			||||||
      if (to.name === 'EnergyReportSearch') {
 | 
					 | 
				
			||||||
        if (location.href.indexOf('?') > 0) {
 | 
					 | 
				
			||||||
          let arr = location.href.split('?')[1].split('&')
 | 
					 | 
				
			||||||
          this.formConfig[2].defaultSelect = [arr[0].split('=')[1], arr[1].split('=')[1]]
 | 
					 | 
				
			||||||
        } else {
 | 
					 | 
				
			||||||
          this.formConfig[2].defaultSelect = [Date.now() - 7*24*3600000, Date.now()]
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        this.queryParams.startTime = this.formConfig[2].defaultSelect[0]
 | 
					 | 
				
			||||||
        this.queryParams.endTime = this.formConfig[2].defaultSelect[1]
 | 
					 | 
				
			||||||
        this.getList()
 | 
					 | 
				
			||||||
      }
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    getTypeList() {
 | 
					    getTypeList() {
 | 
				
			||||||
      getEnergyTypeListAll().then((res) => {
 | 
					      getEnergyTypeListAll().then((res) => {
 | 
				
			||||||
        this.formConfig[1].selectOptions = res.data || []
 | 
					        this.formConfig[1].selectOptions = res.data || []
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -9,7 +9,8 @@
 | 
				
			|||||||
	<el-drawer
 | 
						<el-drawer
 | 
				
			||||||
		:visible="visible"
 | 
							:visible="visible"
 | 
				
			||||||
		:show-close="false"
 | 
							:show-close="false"
 | 
				
			||||||
		:wrapper-closable="false"
 | 
							:wrapper-closable="mode.includes('detail') ? true : false"
 | 
				
			||||||
 | 
							:before-close="handleCancel"
 | 
				
			||||||
		class="drawer"
 | 
							class="drawer"
 | 
				
			||||||
		custom-class="mes-drawer"
 | 
							custom-class="mes-drawer"
 | 
				
			||||||
		:size="size || '50%'"
 | 
							:size="size || '50%'"
 | 
				
			||||||
@@ -129,13 +130,12 @@
 | 
				
			|||||||
				</section>
 | 
									</section>
 | 
				
			||||||
			</div>
 | 
								</div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			<div class="drawer-body__footer">
 | 
								<div v-if="!mode.includes('detail')" class="drawer-body__footer">
 | 
				
			||||||
				<el-button style="" @click="handleCancel">返回</el-button>
 | 
									<el-button style="" @click="handleCancel">取消</el-button>
 | 
				
			||||||
				<el-button
 | 
									<el-button
 | 
				
			||||||
					type="primary"
 | 
										type="primary"
 | 
				
			||||||
					v-if="!mode.includes('detail')"
 | 
					 | 
				
			||||||
					@click="handleSave">
 | 
										@click="handleSave">
 | 
				
			||||||
					保存
 | 
										确定
 | 
				
			||||||
				</el-button>
 | 
									</el-button>
 | 
				
			||||||
			</div>
 | 
								</div>
 | 
				
			||||||
		</div>
 | 
							</div>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -9,7 +9,8 @@
 | 
				
			|||||||
	<el-drawer
 | 
						<el-drawer
 | 
				
			||||||
		:visible="visible"
 | 
							:visible="visible"
 | 
				
			||||||
		:show-close="false"
 | 
							:show-close="false"
 | 
				
			||||||
		:wrapper-closable="false"
 | 
							:wrapper-closable="mode.includes('detail') ? true : false"
 | 
				
			||||||
 | 
							:before-close="handleCancel"
 | 
				
			||||||
		class="drawer"
 | 
							class="drawer"
 | 
				
			||||||
		custom-class="mes-drawer"
 | 
							custom-class="mes-drawer"
 | 
				
			||||||
		:size="size || '50%'"
 | 
							:size="size || '50%'"
 | 
				
			||||||
@@ -128,11 +129,10 @@
 | 
				
			|||||||
				</section>
 | 
									</section>
 | 
				
			||||||
			</div>
 | 
								</div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			<div class="drawer-body__footer">
 | 
								<div v-if="!mode.includes('detail')" class="drawer-body__footer">
 | 
				
			||||||
				<el-button style="" @click="handleCancel">取消</el-button>
 | 
									<el-button style="" @click="handleCancel">取消</el-button>
 | 
				
			||||||
				<el-button
 | 
									<el-button
 | 
				
			||||||
					type="primary"
 | 
										type="primary"
 | 
				
			||||||
					v-if="!mode.includes('detail')"
 | 
					 | 
				
			||||||
					@click="handleCancel">
 | 
										@click="handleCancel">
 | 
				
			||||||
					确定
 | 
										确定
 | 
				
			||||||
				</el-button>
 | 
									</el-button>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -34,7 +34,7 @@
 | 
				
			|||||||
		<base-dialog
 | 
							<base-dialog
 | 
				
			||||||
			:dialogTitle="title"
 | 
								:dialogTitle="title"
 | 
				
			||||||
			:dialogVisible="open"
 | 
								:dialogVisible="open"
 | 
				
			||||||
			width="700px"
 | 
								width="30%"
 | 
				
			||||||
			@close="cancel"
 | 
								@close="cancel"
 | 
				
			||||||
			@cancel="cancel"
 | 
								@cancel="cancel"
 | 
				
			||||||
			@confirm="submitForm">
 | 
								@confirm="submitForm">
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -25,6 +25,7 @@
 | 
				
			|||||||
				v-if="tableBtn.length"
 | 
									v-if="tableBtn.length"
 | 
				
			||||||
				slot="handleBtn"
 | 
									slot="handleBtn"
 | 
				
			||||||
				label="操作"
 | 
									label="操作"
 | 
				
			||||||
 | 
									:width="90"
 | 
				
			||||||
				:method-list="tableBtn"
 | 
									:method-list="tableBtn"
 | 
				
			||||||
				@clickBtn="handleTableBtnClick" />
 | 
									@clickBtn="handleTableBtnClick" />
 | 
				
			||||||
		</base-table>
 | 
							</base-table>
 | 
				
			||||||
@@ -41,7 +42,7 @@
 | 
				
			|||||||
		<base-dialog
 | 
							<base-dialog
 | 
				
			||||||
			:dialogTitle="title"
 | 
								:dialogTitle="title"
 | 
				
			||||||
			:dialogVisible="open"
 | 
								:dialogVisible="open"
 | 
				
			||||||
			width="700px"
 | 
								width="45%"
 | 
				
			||||||
			@close="cancel"
 | 
								@close="cancel"
 | 
				
			||||||
			@cancel="cancel"
 | 
								@cancel="cancel"
 | 
				
			||||||
			@confirm="submitForm">
 | 
								@confirm="submitForm">
 | 
				
			||||||
@@ -127,7 +128,7 @@ export default {
 | 
				
			|||||||
				// 	width: 180,
 | 
									// 	width: 180,
 | 
				
			||||||
				// 	filter: (val) => moment(val).format('yyyy-MM-DD HH:mm:ss'),
 | 
									// 	filter: (val) => moment(val).format('yyyy-MM-DD HH:mm:ss'),
 | 
				
			||||||
				// },
 | 
									// },
 | 
				
			||||||
				{ prop: 'code', label: '编码' },
 | 
									{ prop: 'code', label: '编码', showOverflowtooltip: true },
 | 
				
			||||||
				{ prop: 'plcTableName', label: '关联表名' },
 | 
									{ prop: 'plcTableName', label: '关联表名' },
 | 
				
			||||||
				{ prop: 'name', label: '标识名称' },
 | 
									{ prop: 'name', label: '标识名称' },
 | 
				
			||||||
				{ prop: 'enName', label: '英文名称' },
 | 
									{ prop: 'enName', label: '英文名称' },
 | 
				
			||||||
@@ -136,7 +137,7 @@ export default {
 | 
				
			|||||||
					label: '是否采集',
 | 
										label: '是否采集',
 | 
				
			||||||
					subcomponent: switchBtn,
 | 
										subcomponent: switchBtn,
 | 
				
			||||||
				},
 | 
									},
 | 
				
			||||||
				{ prop: 'description', label: '描述' },
 | 
									{ prop: 'description', label: '描述', showOverflowtooltip: true },
 | 
				
			||||||
			],
 | 
								],
 | 
				
			||||||
			searchBarFormConfig: [
 | 
								searchBarFormConfig: [
 | 
				
			||||||
				{
 | 
									{
 | 
				
			||||||
@@ -213,16 +214,28 @@ export default {
 | 
				
			|||||||
					},
 | 
										},
 | 
				
			||||||
				],
 | 
									],
 | 
				
			||||||
				[
 | 
									[
 | 
				
			||||||
 | 
										// {
 | 
				
			||||||
 | 
										// 	switch: true,
 | 
				
			||||||
 | 
										// 	label: '是否采集', // 是否采集 0 代表不采集, 1 代表采集
 | 
				
			||||||
 | 
										// 	prop: 'collection',
 | 
				
			||||||
 | 
										// 	bind: {
 | 
				
			||||||
 | 
					          //     'active-value': 1,
 | 
				
			||||||
 | 
										// 		'inactive-value': 0,
 | 
				
			||||||
 | 
					          //     value: 1,
 | 
				
			||||||
 | 
										// 	},
 | 
				
			||||||
 | 
										// },
 | 
				
			||||||
					{
 | 
										{
 | 
				
			||||||
						switch: true,
 | 
											select: true,
 | 
				
			||||||
						label: '是否采集', // 是否采集 0 代表不采集, 1 代表采集
 | 
											options: [
 | 
				
			||||||
 | 
												{ label: '否', value: 0 },
 | 
				
			||||||
 | 
												{ label: '是', value: 1 }
 | 
				
			||||||
 | 
											],
 | 
				
			||||||
 | 
											label: '是否采集',
 | 
				
			||||||
						prop: 'collection',
 | 
											prop: 'collection',
 | 
				
			||||||
						bind: {
 | 
											bind: {
 | 
				
			||||||
                            'active-value': 1,
 | 
												clearable: true, filterable: true
 | 
				
			||||||
							'inactive-value': 0,
 | 
											}
 | 
				
			||||||
                            value: 1,
 | 
										}
 | 
				
			||||||
						},
 | 
					 | 
				
			||||||
					},
 | 
					 | 
				
			||||||
				],
 | 
									],
 | 
				
			||||||
				[
 | 
									[
 | 
				
			||||||
					{
 | 
										{
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -9,7 +9,8 @@
 | 
				
			|||||||
	<el-drawer
 | 
						<el-drawer
 | 
				
			||||||
		:visible="visible"
 | 
							:visible="visible"
 | 
				
			||||||
		:show-close="false"
 | 
							:show-close="false"
 | 
				
			||||||
		:wrapper-closable="false"
 | 
							:wrapper-closable="mode.includes('detail') ? true : false"
 | 
				
			||||||
 | 
							:before-close="handleCancel"
 | 
				
			||||||
		class="drawer"
 | 
							class="drawer"
 | 
				
			||||||
		custom-class="mes-drawer"
 | 
							custom-class="mes-drawer"
 | 
				
			||||||
		:size="size || '50%'"
 | 
							:size="size || '50%'"
 | 
				
			||||||
@@ -147,13 +148,12 @@
 | 
				
			|||||||
				</section>
 | 
									</section>
 | 
				
			||||||
			</div>
 | 
								</div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			<div class="drawer-body__footer">
 | 
								<div v-if="!mode.includes('detail')" class="drawer-body__footer">
 | 
				
			||||||
				<el-button style="" @click="handleCancel">取消</el-button>
 | 
									<el-button style="" @click="handleCancel">取消</el-button>
 | 
				
			||||||
				<el-button
 | 
									<el-button
 | 
				
			||||||
					type="primary"
 | 
										type="primary"
 | 
				
			||||||
					v-if="!mode.includes('detail')"
 | 
					 | 
				
			||||||
					@click="handleSave">
 | 
										@click="handleSave">
 | 
				
			||||||
					保存
 | 
										确定
 | 
				
			||||||
				</el-button>
 | 
									</el-button>
 | 
				
			||||||
			</div>
 | 
								</div>
 | 
				
			||||||
		</div>
 | 
							</div>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -12,7 +12,8 @@
 | 
				
			|||||||
		:show-close="false"
 | 
							:show-close="false"
 | 
				
			||||||
		:wrapper-closable="isdetail"
 | 
							:wrapper-closable="isdetail"
 | 
				
			||||||
		class="drawer"
 | 
							class="drawer"
 | 
				
			||||||
		size="60%">
 | 
							size="60%"
 | 
				
			||||||
 | 
							@closed="$emit('destroy')">
 | 
				
			||||||
		<small-title slot="title" :no-padding="true">
 | 
							<small-title slot="title" :no-padding="true">
 | 
				
			||||||
			{{ isdetail ? '查看详情' : !dataForm.id ? '新增' : '编辑' }}
 | 
								{{ isdetail ? '查看详情' : !dataForm.id ? '新增' : '编辑' }}
 | 
				
			||||||
		</small-title>
 | 
							</small-title>
 | 
				
			||||||
@@ -265,6 +266,7 @@ export default {
 | 
				
			|||||||
							this.fileName = this.dataForm.files[0].fileName
 | 
												this.fileName = this.dataForm.files[0].fileName
 | 
				
			||||||
						}
 | 
											}
 | 
				
			||||||
						this.setConfig()
 | 
											this.setConfig()
 | 
				
			||||||
 | 
											this.setInspectionContet()
 | 
				
			||||||
          });
 | 
					          });
 | 
				
			||||||
				} else {
 | 
									} else {
 | 
				
			||||||
					// if (this.urlOptions.isGetCode) {
 | 
										// if (this.urlOptions.isGetCode) {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -49,7 +49,8 @@
 | 
				
			|||||||
		<addRecord
 | 
							<addRecord
 | 
				
			||||||
			v-if="addOrUpdateVisible"
 | 
								v-if="addOrUpdateVisible"
 | 
				
			||||||
			ref="addOrUpdate"
 | 
								ref="addOrUpdate"
 | 
				
			||||||
			@refreshDataList="getList" />
 | 
								@refreshDataList="getList"
 | 
				
			||||||
 | 
								@destroy="addOrUpdateVisible = false" />
 | 
				
			||||||
	</div>
 | 
						</div>
 | 
				
			||||||
</template>
 | 
					</template>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -49,7 +49,7 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
<script>
 | 
					<script>
 | 
				
			||||||
import { publicFormatter } from '@/utils/dict';
 | 
					import { publicFormatter } from '@/utils/dict';
 | 
				
			||||||
import moment from 'moment';
 | 
					// import moment from 'moment';
 | 
				
			||||||
import basicPageMixin from '@/mixins/lb/basicPageMixin';
 | 
					import basicPageMixin from '@/mixins/lb/basicPageMixin';
 | 
				
			||||||
import { exportMaintainMonitorExcel } from '@/api/equipment/base/maintain/record'
 | 
					import { exportMaintainMonitorExcel } from '@/api/equipment/base/maintain/record'
 | 
				
			||||||
import { parseTime } from '@/utils/ruoyi'
 | 
					import { parseTime } from '@/utils/ruoyi'
 | 
				
			||||||
@@ -67,7 +67,7 @@ const remainBox = {
 | 
				
			|||||||
		color() {
 | 
							color() {
 | 
				
			||||||
			if (this.value) {
 | 
								if (this.value) {
 | 
				
			||||||
				const v = +this.value;
 | 
									const v = +this.value;
 | 
				
			||||||
				return v < 0 ? 'red' : v >= 0 && v < 2 ? 'yellow' : 'green';
 | 
									return v < 0 ? '#FF5454' : v >= 0 && v < 2 ? '#FFD767' : '#37D97F';
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
			return 'unset';
 | 
								return 'unset';
 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
@@ -78,9 +78,10 @@ const remainBox = {
 | 
				
			|||||||
				style={`background: ${
 | 
									style={`background: ${
 | 
				
			||||||
					this.color
 | 
										this.color
 | 
				
			||||||
				}; position:absolute; inset: 0; padding: 0 10px; display: flex; align-items: center; color: ${
 | 
									}; position:absolute; inset: 0; padding: 0 10px; display: flex; align-items: center; color: ${
 | 
				
			||||||
					this.color == 'red' ? '#fff' : 'unset'
 | 
										// this.color == 'red' ? '#fff' : 'unset'
 | 
				
			||||||
 | 
										'#fff'
 | 
				
			||||||
				}`}>
 | 
									}`}>
 | 
				
			||||||
				{this.injectData[this.injectData.prop] || ''}
 | 
									{ this.injectData[this.injectData.prop]?.toFixed(0) || '' }
 | 
				
			||||||
			</div>
 | 
								</div>
 | 
				
			||||||
		);
 | 
							);
 | 
				
			||||||
	},
 | 
						},
 | 
				
			||||||
@@ -121,30 +122,35 @@ export default {
 | 
				
			|||||||
				// 	width: 180,
 | 
									// 	width: 180,
 | 
				
			||||||
				// 	filter: parseTime(createTime),
 | 
									// 	filter: parseTime(createTime),
 | 
				
			||||||
				// },
 | 
									// },
 | 
				
			||||||
				{ prop: 'name', label: '保养计划' },
 | 
									{ prop: 'name', label: '保养计划', minWidth: 100, showOverflowtooltip: true },
 | 
				
			||||||
				{ prop: 'lineName', label: '产线名' },
 | 
									{ prop: 'lineName', label: '产线名', minWidth: 100, showOverflowtooltip: true },
 | 
				
			||||||
				{ prop: 'sectionName', label: '工段名' },
 | 
									{ prop: 'sectionName', label: '工段名', minWidth: 100, showOverflowtooltip: true },
 | 
				
			||||||
				{ prop: 'equipmentName', label: '设备名称' },
 | 
									{ prop: 'equipmentName', label: '设备名称', minWidth: 100, showOverflowtooltip: true },
 | 
				
			||||||
				{ prop: 'equipmentCode', label: '设备编码' },
 | 
									{ prop: 'equipmentCode', label: '设备编码', minWidth: 100, showOverflowtooltip: true },
 | 
				
			||||||
				{ prop: 'maintenancePeriod', label: '保养频率' },
 | 
									{ prop: 'maintenancePeriod', label: '保养频率' },
 | 
				
			||||||
				{
 | 
									{
 | 
				
			||||||
					prop: 'maintainType',
 | 
										prop: 'maintainType',
 | 
				
			||||||
					label: '保养类型',
 | 
										label: '保养类型',
 | 
				
			||||||
 | 
										showOverflowtooltip: true,
 | 
				
			||||||
					filter: publicFormatter(this.DICT_TYPE.MAINTAIN_TYPE),
 | 
										filter: publicFormatter(this.DICT_TYPE.MAINTAIN_TYPE),
 | 
				
			||||||
				},
 | 
									},
 | 
				
			||||||
				{
 | 
									{
 | 
				
			||||||
					prop: 'lastMaintainTime',
 | 
										prop: 'lastMaintainTime',
 | 
				
			||||||
					label: '上次保养时间',
 | 
										label: '上次保养时间',
 | 
				
			||||||
					filter: parseTime,
 | 
										filter: parseTime,
 | 
				
			||||||
 | 
										minWidth: 150,
 | 
				
			||||||
 | 
										showOverflowtooltip: true
 | 
				
			||||||
				},
 | 
									},
 | 
				
			||||||
				{ prop: 'nextMaintainTime', label: '计划下次保养时间', filter: parseTime },
 | 
									{ prop: 'nextMaintainTime', label: '计划下次保养时间', filter: parseTime, minWidth: 150, showOverflowtooltip: true },
 | 
				
			||||||
				{
 | 
									{
 | 
				
			||||||
					prop: 'remainDays',
 | 
										prop: 'remainDays',
 | 
				
			||||||
					label: '距离保养时间(天)',
 | 
										label: '距离保养时间(天)',
 | 
				
			||||||
					subcomponent: remainBox,
 | 
										subcomponent: remainBox,
 | 
				
			||||||
 | 
										minWidth: 150,
 | 
				
			||||||
 | 
										// showOverflowtooltip: true
 | 
				
			||||||
				},
 | 
									},
 | 
				
			||||||
				{ prop: 'opt1', label: '设备保养', name: '操作', subcomponent: btn },
 | 
									{ prop: 'opt1', label: '设备保养', name: '操作', subcomponent: btn, width: 100 },
 | 
				
			||||||
				{ prop: 'opt2', label: '保养记录', name: '查看详情', subcomponent: btn },
 | 
									{ prop: 'opt2', label: '保养记录', name: '查看详情', subcomponent: btn, width: 100 },
 | 
				
			||||||
			],
 | 
								],
 | 
				
			||||||
			searchBarFormConfig: [
 | 
								searchBarFormConfig: [
 | 
				
			||||||
				{
 | 
									{
 | 
				
			||||||
@@ -176,6 +182,7 @@ export default {
 | 
				
			|||||||
						: '',
 | 
											: '',
 | 
				
			||||||
					btnName: '导出',
 | 
										btnName: '导出',
 | 
				
			||||||
					name: 'export',
 | 
										name: 'export',
 | 
				
			||||||
 | 
										plain: true,
 | 
				
			||||||
					color: 'warning',
 | 
										color: 'warning',
 | 
				
			||||||
				},
 | 
									},
 | 
				
			||||||
			],
 | 
								],
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -99,23 +99,24 @@ export default {
 | 
				
			|||||||
					prop: 'createTime',
 | 
										prop: 'createTime',
 | 
				
			||||||
					label: '添加时间',
 | 
										label: '添加时间',
 | 
				
			||||||
					fixed: true,
 | 
										fixed: true,
 | 
				
			||||||
					width: 180,
 | 
										width: 150,
 | 
				
			||||||
					filter: timeFilter,
 | 
										filter: timeFilter,
 | 
				
			||||||
				},
 | 
									},
 | 
				
			||||||
				{ prop: 'maintainOrderNumber', label: '设备保养单号' },
 | 
									{ prop: 'maintainOrderNumber', label: '设备保养单号', width: 110, showOverflowtooltip: true },
 | 
				
			||||||
				{ prop: 'startTime', label: '开始时间', filter: timeFilter },
 | 
									{ prop: 'startTime', label: '开始时间', filter: timeFilter, minWidth: 150, showOverflowtooltip: true },
 | 
				
			||||||
				{ prop: 'endTime', label: '结束时间', filter: timeFilter },
 | 
									{ prop: 'endTime', label: '结束时间', filter: timeFilter, minWidth: 150, showOverflowtooltip: true },
 | 
				
			||||||
				{ prop: 'equipmentName', label: '设备名称' },
 | 
									{ prop: 'equipmentName', label: '设备名称', minWidth: 100, showOverflowtooltip: true },
 | 
				
			||||||
				{ prop: 'maintainWorker', label: '保养人员' },
 | 
									{ prop: 'maintainWorker', label: '保养人员', minWidth: 100, showOverflowtooltip: true },
 | 
				
			||||||
				{
 | 
									{
 | 
				
			||||||
					prop: 'relatePlan',
 | 
										prop: 'relatePlan',
 | 
				
			||||||
					label: '是否计划保养',
 | 
										label: '是否计划保养',
 | 
				
			||||||
 | 
										width: 120,
 | 
				
			||||||
					filter: (v) => (v != null ? ['', '是', '否'][v] : ''),
 | 
										filter: (v) => (v != null ? ['', '是', '否'][v] : ''),
 | 
				
			||||||
				},
 | 
									},
 | 
				
			||||||
				{ prop: 'planName', label: '保养计划名称' },
 | 
									{ prop: 'planName', label: '保养计划名称', minWidth: 120, showOverflowtooltip: true },
 | 
				
			||||||
				{ prop: 'maintainDuration', label: '计划保养用时(h)' },
 | 
									{ prop: 'maintainDuration', label: '计划保养用时(h)', minWidth: 130, showOverflowtooltip: true },
 | 
				
			||||||
				{ prop: 'timeUsed', label: '实际保养用时(h)' },
 | 
									{ prop: 'timeUsed', label: '实际保养用时(h)', minWidth: 130 },
 | 
				
			||||||
				{ prop: 'remark', label: '备注' },
 | 
									{ prop: 'remark', label: '备注', minWidth: 100, showOverflowtooltip: true },
 | 
				
			||||||
			],
 | 
								],
 | 
				
			||||||
			searchBarFormConfig: [
 | 
								searchBarFormConfig: [
 | 
				
			||||||
				{
 | 
									{
 | 
				
			||||||
@@ -162,6 +163,15 @@ export default {
 | 
				
			|||||||
				{
 | 
									{
 | 
				
			||||||
					type: 'separate',
 | 
										type: 'separate',
 | 
				
			||||||
				},
 | 
									},
 | 
				
			||||||
 | 
									{
 | 
				
			||||||
 | 
										type: this.$auth.hasPermi('equipment:maintain-record:export')
 | 
				
			||||||
 | 
											? 'button'
 | 
				
			||||||
 | 
											: '',
 | 
				
			||||||
 | 
										btnName: '导出',
 | 
				
			||||||
 | 
										name: 'export',
 | 
				
			||||||
 | 
										plain: true,
 | 
				
			||||||
 | 
										color: 'warning',
 | 
				
			||||||
 | 
									},
 | 
				
			||||||
				{
 | 
									{
 | 
				
			||||||
					type: this.$auth.hasPermi('equipment:maintain-record:create')
 | 
										type: this.$auth.hasPermi('equipment:maintain-record:create')
 | 
				
			||||||
						? 'button'
 | 
											? 'button'
 | 
				
			||||||
@@ -171,14 +181,6 @@ export default {
 | 
				
			|||||||
					plain: true,
 | 
										plain: true,
 | 
				
			||||||
					color: 'success',
 | 
										color: 'success',
 | 
				
			||||||
				},
 | 
									},
 | 
				
			||||||
				{
 | 
					 | 
				
			||||||
					type: this.$auth.hasPermi('equipment:maintain-record:export')
 | 
					 | 
				
			||||||
						? 'button'
 | 
					 | 
				
			||||||
						: '',
 | 
					 | 
				
			||||||
					btnName: '导出',
 | 
					 | 
				
			||||||
					name: 'export',
 | 
					 | 
				
			||||||
					color: 'warning',
 | 
					 | 
				
			||||||
				},
 | 
					 | 
				
			||||||
			],
 | 
								],
 | 
				
			||||||
			rows: [
 | 
								rows: [
 | 
				
			||||||
				[
 | 
									[
 | 
				
			||||||
@@ -213,17 +215,29 @@ export default {
 | 
				
			|||||||
					},
 | 
										},
 | 
				
			||||||
				],
 | 
									],
 | 
				
			||||||
				[
 | 
									[
 | 
				
			||||||
 | 
										// {
 | 
				
			||||||
 | 
										// 	switch: true,
 | 
				
			||||||
 | 
										// 	label: '是否计划保养',
 | 
				
			||||||
 | 
										// 	prop: 'relatePlan',
 | 
				
			||||||
 | 
										// 	bind: {
 | 
				
			||||||
 | 
										// 		'active-value': 1,
 | 
				
			||||||
 | 
										// 		'inactive-value': 2,
 | 
				
			||||||
 | 
										// 	},
 | 
				
			||||||
 | 
										// 	rules: [{ required: true, message: '是否计划保养不能为空', trigger: 'blur' }],
 | 
				
			||||||
 | 
										// },
 | 
				
			||||||
					{
 | 
										{
 | 
				
			||||||
						switch: true,
 | 
											select: true,
 | 
				
			||||||
 | 
											options: [
 | 
				
			||||||
 | 
												{ label: '是', value: 1 },
 | 
				
			||||||
 | 
												{ label: '否', value: 2 }
 | 
				
			||||||
 | 
											],
 | 
				
			||||||
						label: '是否计划保养',
 | 
											label: '是否计划保养',
 | 
				
			||||||
						prop: 'relatePlan',
 | 
											prop: 'relatePlan',
 | 
				
			||||||
						bind: {
 | 
											bind: {
 | 
				
			||||||
							'active-value': 1,
 | 
												clearable: true, filterable: true
 | 
				
			||||||
							'inactive-value': 2,
 | 
					 | 
				
			||||||
						},
 | 
											},
 | 
				
			||||||
						rules: [{ required: true, message: '是否计划保养不能为空', trigger: 'blur' }],
 | 
											rules: [{ required: true, message: '是否计划保养不能为空', trigger: 'blur' }],
 | 
				
			||||||
					},
 | 
										},
 | 
				
			||||||
					{},
 | 
					 | 
				
			||||||
					{
 | 
										{
 | 
				
			||||||
						select: true,
 | 
											select: true,
 | 
				
			||||||
						label: '所属计划',
 | 
											label: '所属计划',
 | 
				
			||||||
@@ -234,6 +248,11 @@ export default {
 | 
				
			|||||||
							clearable: true,
 | 
												clearable: true,
 | 
				
			||||||
						},
 | 
											},
 | 
				
			||||||
					},
 | 
										},
 | 
				
			||||||
 | 
										{
 | 
				
			||||||
 | 
											input: true,
 | 
				
			||||||
 | 
											label: '保养用时',
 | 
				
			||||||
 | 
											prop: 'timeUsed',
 | 
				
			||||||
 | 
										},
 | 
				
			||||||
				],
 | 
									],
 | 
				
			||||||
				[
 | 
									[
 | 
				
			||||||
					{
 | 
										{
 | 
				
			||||||
@@ -260,11 +279,7 @@ export default {
 | 
				
			|||||||
							clearable: true,
 | 
												clearable: true,
 | 
				
			||||||
						},
 | 
											},
 | 
				
			||||||
					},
 | 
										},
 | 
				
			||||||
					{
 | 
										{}
 | 
				
			||||||
						input: true,
 | 
					 | 
				
			||||||
						label: '保养用时',
 | 
					 | 
				
			||||||
						prop: 'timeUsed',
 | 
					 | 
				
			||||||
					},
 | 
					 | 
				
			||||||
				],
 | 
									],
 | 
				
			||||||
 | 
					
 | 
				
			||||||
				[
 | 
									[
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -9,166 +9,168 @@
 | 
				
			|||||||
	<el-drawer
 | 
						<el-drawer
 | 
				
			||||||
		:visible.sync="visible"
 | 
							:visible.sync="visible"
 | 
				
			||||||
		:show-close="false"
 | 
							:show-close="false"
 | 
				
			||||||
		:wrapper-closable="false"
 | 
							:wrapper-closable="disabled"
 | 
				
			||||||
		class="drawer"
 | 
							class="drawer"
 | 
				
			||||||
		size="60%">
 | 
							custom-class="mes-drawer"
 | 
				
			||||||
 | 
							size="65%"
 | 
				
			||||||
 | 
							@closed="$emit('destroy')">
 | 
				
			||||||
		<small-title slot="title" :no-padding="true">
 | 
							<small-title slot="title" :no-padding="true">
 | 
				
			||||||
			{{ disabled ? '查看详情' : !dataForm.maintenanceStatus ? '修改' : '完成' }}
 | 
								{{ disabled ? '查看详情' : !dataForm.maintenanceStatus ? '修改' : '完成' }}
 | 
				
			||||||
		</small-title>
 | 
							</small-title>
 | 
				
			||||||
		<el-form
 | 
							<div class="drawer-body flex">
 | 
				
			||||||
			ref="form"
 | 
								<div class="drawer-body__content">
 | 
				
			||||||
			:model="dataForm"
 | 
									<el-form
 | 
				
			||||||
			label-width="100px"
 | 
										ref="form"
 | 
				
			||||||
			label-position="top"
 | 
										:model="dataForm"
 | 
				
			||||||
			v-loading="formLoading">
 | 
										label-width="100px"
 | 
				
			||||||
			<el-row :gutter="20">
 | 
										label-position="top"
 | 
				
			||||||
				<el-col :span="8">
 | 
										v-loading="formLoading">
 | 
				
			||||||
					<el-form-item label="维修单号" prop="repairOrderNumber">
 | 
										<el-row :gutter="20">
 | 
				
			||||||
						<span>{{ dataForm.repairOrderNumber }}</span>
 | 
											<el-col :span="8">
 | 
				
			||||||
					</el-form-item>
 | 
												<el-form-item label="维修单号" prop="repairOrderNumber">
 | 
				
			||||||
				</el-col>
 | 
													<span>{{ dataForm.repairOrderNumber }}</span>
 | 
				
			||||||
				<el-col :span="8">
 | 
												</el-form-item>
 | 
				
			||||||
					<el-form-item label="设备名称" prop="equipmentName">
 | 
											</el-col>
 | 
				
			||||||
						<span>{{ dataForm.equipmentName }}</span>
 | 
											<el-col :span="8">
 | 
				
			||||||
					</el-form-item>
 | 
												<el-form-item label="设备名称" prop="equipmentName">
 | 
				
			||||||
				</el-col>
 | 
													<span>{{ dataForm.equipmentName }}</span>
 | 
				
			||||||
				<el-col :span="8">
 | 
												</el-form-item>
 | 
				
			||||||
					<el-form-item label="维修工" prop="repairman">
 | 
											</el-col>
 | 
				
			||||||
						<span>{{ dataForm.repairman }}</span>
 | 
											<el-col :span="8">
 | 
				
			||||||
					</el-form-item>
 | 
												<el-form-item label="维修工" prop="repairman">
 | 
				
			||||||
				</el-col>
 | 
													<span>{{ dataForm.repairman }}</span>
 | 
				
			||||||
			</el-row>
 | 
												</el-form-item>
 | 
				
			||||||
			<el-row :gutter="20">
 | 
											</el-col>
 | 
				
			||||||
				<el-col :span="8">
 | 
										</el-row>
 | 
				
			||||||
					<el-form-item label="故障发生时间" prop="faultTime">
 | 
										<el-row :gutter="20">
 | 
				
			||||||
						<span>{{ parseTime(dataForm.faultTime) }}</span>
 | 
											<el-col :span="8">
 | 
				
			||||||
					</el-form-item>
 | 
												<el-form-item label="故障发生时间" prop="faultTime">
 | 
				
			||||||
				</el-col>
 | 
													<span>{{ parseTime(dataForm.faultTime) }}</span>
 | 
				
			||||||
				<el-col :span="8">
 | 
												</el-form-item>
 | 
				
			||||||
					<el-form-item label="故障级别" prop="faultLevel">
 | 
											</el-col>
 | 
				
			||||||
						<span>{{ getDictDataLabel('fault-level', dataForm.faultLevel) }}</span>
 | 
											<el-col :span="8">
 | 
				
			||||||
					</el-form-item>
 | 
												<el-form-item label="故障级别" prop="faultLevel">
 | 
				
			||||||
				</el-col>
 | 
													<span>{{ getDictDataLabel('fault-level', dataForm.faultLevel) }}</span>
 | 
				
			||||||
				<el-col :span="8">
 | 
												</el-form-item>
 | 
				
			||||||
					<el-form-item label="联系方式" prop="repairmanPhone">
 | 
											</el-col>
 | 
				
			||||||
						<span>{{ dataForm.repairmanPhone }}</span>
 | 
											<el-col :span="8">
 | 
				
			||||||
					</el-form-item>
 | 
												<el-form-item label="联系方式" prop="repairmanPhone">
 | 
				
			||||||
				</el-col>
 | 
													<span>{{ dataForm.repairmanPhone }}</span>
 | 
				
			||||||
			</el-row>
 | 
												</el-form-item>
 | 
				
			||||||
			<small-title style="margin: 16px 0; padding-left: 8px" :no-padding="true">
 | 
											</el-col>
 | 
				
			||||||
				{{ '可编辑信息' }}
 | 
										</el-row>
 | 
				
			||||||
			</small-title>
 | 
					 | 
				
			||||||
			<el-row :gutter="20">
 | 
					 | 
				
			||||||
				<el-col :span="8">
 | 
					 | 
				
			||||||
					<el-form-item
 | 
					 | 
				
			||||||
						label="维修开始时间"
 | 
					 | 
				
			||||||
						prop="maintenanceStartTime"
 | 
					 | 
				
			||||||
						:rules="[{ required: true, message: '维修开始时间不能为空', trigger: 'blur' }]">
 | 
					 | 
				
			||||||
						<el-date-picker
 | 
					 | 
				
			||||||
							v-model="dataForm.maintenanceStartTime"
 | 
					 | 
				
			||||||
							type="datetime"
 | 
					 | 
				
			||||||
							:disabled="disabled"
 | 
					 | 
				
			||||||
							placeholder="请选择维修开始时间"
 | 
					 | 
				
			||||||
							value-format="timestamp" />
 | 
					 | 
				
			||||||
					</el-form-item>
 | 
					 | 
				
			||||||
				</el-col>
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
				<el-col :span="8">
 | 
										<el-divider style="margin-top: -10px" />
 | 
				
			||||||
					<el-form-item
 | 
										
 | 
				
			||||||
						label="维修结束时间"
 | 
										<small-title style="margin: 16px 0; padding-left: 8px" :no-padding="true">
 | 
				
			||||||
						prop="maintenanceFinishTime"
 | 
											{{ '设备维修信息' }}
 | 
				
			||||||
						:rules="[{ required: true, message: '维修结束时间不能为空', trigger: 'blur' }]">
 | 
										</small-title>
 | 
				
			||||||
						<el-date-picker
 | 
										<el-row :gutter="20">
 | 
				
			||||||
							v-model="dataForm.maintenanceFinishTime"
 | 
											<el-col :span="6">
 | 
				
			||||||
							type="datetime"
 | 
												<el-form-item
 | 
				
			||||||
							:disabled="disabled"
 | 
													label="维修开始时间"
 | 
				
			||||||
							placeholder="请选择维修开始时间"
 | 
													prop="maintenanceStartTime"
 | 
				
			||||||
							value-format="timestamp" />
 | 
													:rules="[{ required: true, message: '维修开始时间不能为空', trigger: 'blur' }]">
 | 
				
			||||||
					</el-form-item>
 | 
													<el-date-picker
 | 
				
			||||||
				</el-col>
 | 
														v-model="dataForm.maintenanceStartTime"
 | 
				
			||||||
 | 
														type="datetime"
 | 
				
			||||||
 | 
														:disabled="disabled"
 | 
				
			||||||
 | 
														placeholder="请选择维修开始时间"
 | 
				
			||||||
 | 
														value-format="timestamp" />
 | 
				
			||||||
 | 
												</el-form-item>
 | 
				
			||||||
 | 
											</el-col>
 | 
				
			||||||
 | 
											<el-col :span="6">
 | 
				
			||||||
 | 
												<el-form-item
 | 
				
			||||||
 | 
													label="维修结束时间"
 | 
				
			||||||
 | 
													prop="maintenanceFinishTime"
 | 
				
			||||||
 | 
													:rules="[{ required: true, message: '维修结束时间不能为空', trigger: 'blur' }]">
 | 
				
			||||||
 | 
													<el-date-picker
 | 
				
			||||||
 | 
														v-model="dataForm.maintenanceFinishTime"
 | 
				
			||||||
 | 
														type="datetime"
 | 
				
			||||||
 | 
														:disabled="disabled"
 | 
				
			||||||
 | 
														placeholder="请选择维修开始时间"
 | 
				
			||||||
 | 
														value-format="timestamp" />
 | 
				
			||||||
 | 
												</el-form-item>
 | 
				
			||||||
 | 
											</el-col>
 | 
				
			||||||
 | 
											<el-col :span="6">
 | 
				
			||||||
 | 
												<el-form-item
 | 
				
			||||||
 | 
													label="维修方式"
 | 
				
			||||||
 | 
													prop="repairMode"
 | 
				
			||||||
 | 
													:rules="[{ required: true, message: '维修方式不能为空', trigger: 'blur' }]">
 | 
				
			||||||
 | 
													<el-select
 | 
				
			||||||
 | 
														:disabled="disabled"
 | 
				
			||||||
 | 
														v-model="dataForm.repairMode"
 | 
				
			||||||
 | 
														placeholder="请选择维修方式">
 | 
				
			||||||
 | 
														<el-option
 | 
				
			||||||
 | 
															v-for="opt in getDictDatas('repair-mode')"
 | 
				
			||||||
 | 
															:key="opt.value"
 | 
				
			||||||
 | 
															:label="opt.label"
 | 
				
			||||||
 | 
															:value="opt.value" />
 | 
				
			||||||
 | 
													</el-select>
 | 
				
			||||||
 | 
												</el-form-item>
 | 
				
			||||||
 | 
											</el-col>
 | 
				
			||||||
 | 
											<el-col :span="6">
 | 
				
			||||||
 | 
												<el-form-item label="故障类型" prop="faultType">
 | 
				
			||||||
 | 
													<el-select
 | 
				
			||||||
 | 
														:disabled="disabled"
 | 
				
			||||||
 | 
														v-model="dataForm.faultType"
 | 
				
			||||||
 | 
														placeholder="请选择故障类型">
 | 
				
			||||||
 | 
														<el-option
 | 
				
			||||||
 | 
															v-for="opt in getDictDatas('fault-type')"
 | 
				
			||||||
 | 
															:key="opt.value"
 | 
				
			||||||
 | 
															:label="opt.label"
 | 
				
			||||||
 | 
															:value="opt.value" />
 | 
				
			||||||
 | 
													</el-select>
 | 
				
			||||||
 | 
												</el-form-item>
 | 
				
			||||||
 | 
											</el-col>
 | 
				
			||||||
 | 
										</el-row>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
				<el-col :span="8">
 | 
										<el-row :gutter="20">
 | 
				
			||||||
					<el-form-item
 | 
											<el-col>
 | 
				
			||||||
						label="维修方式"
 | 
												<el-form-item
 | 
				
			||||||
						prop="repairMode"
 | 
													label="故障明细"
 | 
				
			||||||
						:rules="[{ required: true, message: '维修方式不能为空', trigger: 'blur' }]">
 | 
													prop="faultDetail"
 | 
				
			||||||
						<el-select
 | 
													:rules="[{ required: true, message: '故障明细不能为空', trigger: 'blur' }]">
 | 
				
			||||||
							:disabled="disabled"
 | 
													<!-- // 富文本 -->
 | 
				
			||||||
							v-model="dataForm.repairMode"
 | 
													<editor v-model="dataForm.faultDetail" :read-only="disabled" :min-height="150"/>
 | 
				
			||||||
							placeholder="请选择维修方式">
 | 
												</el-form-item>
 | 
				
			||||||
							<el-option
 | 
											</el-col>
 | 
				
			||||||
								v-for="opt in getDictDatas('repair-mode')"
 | 
										</el-row>
 | 
				
			||||||
								:key="opt.value"
 | 
					 | 
				
			||||||
								:label="opt.label"
 | 
					 | 
				
			||||||
								:value="opt.value" />
 | 
					 | 
				
			||||||
						</el-select>
 | 
					 | 
				
			||||||
					</el-form-item>
 | 
					 | 
				
			||||||
				</el-col>
 | 
					 | 
				
			||||||
			</el-row>
 | 
					 | 
				
			||||||
			<el-row :gutter="20">
 | 
					 | 
				
			||||||
				<el-col :span="8">
 | 
					 | 
				
			||||||
					<el-form-item label="故障类型" prop="faultType">
 | 
					 | 
				
			||||||
						<el-select
 | 
					 | 
				
			||||||
							:disabled="disabled"
 | 
					 | 
				
			||||||
							v-model="dataForm.faultType"
 | 
					 | 
				
			||||||
							placeholder="请选择故障类型">
 | 
					 | 
				
			||||||
							<el-option
 | 
					 | 
				
			||||||
								v-for="opt in getDictDatas('fault-type')"
 | 
					 | 
				
			||||||
								:key="opt.value"
 | 
					 | 
				
			||||||
								:label="opt.label"
 | 
					 | 
				
			||||||
								:value="opt.value" />
 | 
					 | 
				
			||||||
						</el-select>
 | 
					 | 
				
			||||||
					</el-form-item>
 | 
					 | 
				
			||||||
				</el-col>
 | 
					 | 
				
			||||||
			</el-row>
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
			<el-row :gutter="20">
 | 
										<el-row :gutter="20">
 | 
				
			||||||
				<el-col>
 | 
											<el-col>
 | 
				
			||||||
					<el-form-item
 | 
												<el-form-item label="维修记录" prop="maintenanceDetail">
 | 
				
			||||||
						label="故障明细"
 | 
													<!-- // 富文本 -->
 | 
				
			||||||
						prop="faultDetail"
 | 
													<editor v-model="dataForm.maintenanceDetail" :read-only="disabled" :min-height="150"/>
 | 
				
			||||||
						:rules="[{ required: true, message: '故障明细不能为空', trigger: 'blur' }]">
 | 
												</el-form-item>
 | 
				
			||||||
						<!-- // 富文本 -->
 | 
											</el-col>
 | 
				
			||||||
						<editor v-model="dataForm.faultDetail" :read-only="disabled" :min-height="380"/>
 | 
										</el-row>
 | 
				
			||||||
					</el-form-item>
 | 
					 | 
				
			||||||
				</el-col>
 | 
					 | 
				
			||||||
			</el-row>
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
			<el-row :gutter="20">
 | 
										<el-row :gutter="20">
 | 
				
			||||||
				<el-col>
 | 
											<el-col>
 | 
				
			||||||
					<el-form-item label="维修记录" prop="maintenanceDetail">
 | 
												<el-form-item label="维修附件" prop="file">
 | 
				
			||||||
						<!-- // 富文本 -->
 | 
													<FileUpload v-model="file" :limit="1" :f-name="fileName" :disabled="disabled" @name="setFileName" />
 | 
				
			||||||
						<editor v-model="dataForm.maintenanceDetail" :read-only="disabled" :min-height="380"/>
 | 
												</el-form-item>
 | 
				
			||||||
					</el-form-item>
 | 
											</el-col>
 | 
				
			||||||
				</el-col>
 | 
										</el-row>
 | 
				
			||||||
			</el-row>
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
			<el-row :gutter="20">
 | 
										<el-row :gutter="20">
 | 
				
			||||||
				<el-col>
 | 
											<el-col>
 | 
				
			||||||
					<el-form-item label="维修附件" prop="file">
 | 
												<el-form-item label="备注" prop="remark">
 | 
				
			||||||
						<FileUpload v-model="file" :limit="1" :f-name="fileName" :disabled="disabled" @name="setFileName" />
 | 
													<el-input
 | 
				
			||||||
					</el-form-item>
 | 
														v-model="dataForm.remark"
 | 
				
			||||||
				</el-col>
 | 
														:placeholder="`请输入备注`"
 | 
				
			||||||
			</el-row>
 | 
														:disabled="disabled" />
 | 
				
			||||||
 | 
												</el-form-item>
 | 
				
			||||||
 | 
											</el-col>
 | 
				
			||||||
 | 
										</el-row>
 | 
				
			||||||
 | 
									</el-form>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			<el-row :gutter="20">
 | 
									<div v-if="!disabled" class="drawer-body__footer">
 | 
				
			||||||
				<el-col>
 | 
										<el-button style="" @click="goback()">取消</el-button>
 | 
				
			||||||
					<el-form-item label="备注" prop="remark">
 | 
										<el-button type="primary" @click="dataFormSubmit()">确定</el-button>
 | 
				
			||||||
						<el-input
 | 
									</div>
 | 
				
			||||||
							v-model="dataForm.remark"
 | 
								</div>
 | 
				
			||||||
							:placeholder="`请输入备注`"
 | 
					 | 
				
			||||||
							:disabled="disabled" />
 | 
					 | 
				
			||||||
					</el-form-item>
 | 
					 | 
				
			||||||
				</el-col>
 | 
					 | 
				
			||||||
			</el-row>
 | 
					 | 
				
			||||||
		</el-form>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		<div class="drawer-body__footer">
 | 
					 | 
				
			||||||
			<el-button style="" @click="goback()">{{ disabled ? '返回' : '取消' }}</el-button>
 | 
					 | 
				
			||||||
			<!-- <el-button v-if="disabled" type="primary" @click="goEdit()">
 | 
					 | 
				
			||||||
				编辑
 | 
					 | 
				
			||||||
			</el-button> -->
 | 
					 | 
				
			||||||
			<el-button v-if="!disabled" type="primary" @click="dataFormSubmit()">确定</el-button>
 | 
					 | 
				
			||||||
		</div>
 | 
							</div>
 | 
				
			||||||
	</el-drawer>
 | 
						</el-drawer>
 | 
				
			||||||
</template>
 | 
					</template>
 | 
				
			||||||
@@ -300,56 +302,39 @@ export default {
 | 
				
			|||||||
</script>
 | 
					</script>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<style scoped>
 | 
					<style scoped>
 | 
				
			||||||
.el-date-editor,
 | 
					 | 
				
			||||||
.el-select {
 | 
					 | 
				
			||||||
	width: 100%;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
.drawer-body__footer {
 | 
					 | 
				
			||||||
	display: flex;
 | 
					 | 
				
			||||||
	justify-content: flex-end;
 | 
					 | 
				
			||||||
	padding: 18px;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
.drawer >>> .el-drawer {
 | 
					.drawer >>> .el-drawer {
 | 
				
			||||||
	border-radius: 8px 0 0 8px;
 | 
						border-radius: 8px 0 0 8px;
 | 
				
			||||||
	display: flex;
 | 
					 | 
				
			||||||
	flex-direction: column;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
.drawer >>> .el-form-item__label {
 | 
					 | 
				
			||||||
	padding: 0;
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.drawer >>> .el-drawer__header {
 | 
					.drawer >>> .el-drawer__header {
 | 
				
			||||||
	margin: 0;
 | 
						margin: 0;
 | 
				
			||||||
	padding: 32px 32px 24px;
 | 
						padding: 32px 32px 24px;
 | 
				
			||||||
	border-bottom: 1px solid #dcdfe6;
 | 
						border-bottom: 1px solid #dcdfe6;
 | 
				
			||||||
 | 
						margin-bottom: 0px;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
.drawer >>> .el-drawer__body {
 | 
					
 | 
				
			||||||
	flex: 1;
 | 
					.small-title::before {
 | 
				
			||||||
	height: 1px;
 | 
						content: '';
 | 
				
			||||||
 | 
						display: inline-block;
 | 
				
			||||||
 | 
						vertical-align: top;
 | 
				
			||||||
 | 
						width: 4px;
 | 
				
			||||||
 | 
						height: 22px;
 | 
				
			||||||
 | 
						border-radius: 1px;
 | 
				
			||||||
 | 
						margin-right: 8px;
 | 
				
			||||||
 | 
						background-color: #0b58ff;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.drawer-body {
 | 
				
			||||||
	display: flex;
 | 
						display: flex;
 | 
				
			||||||
	flex-direction: column;
 | 
						flex-direction: column;
 | 
				
			||||||
 | 
						height: 100%;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.drawer >>> .content {
 | 
					.drawer-body__content {
 | 
				
			||||||
	padding: 30px 24px;
 | 
					 | 
				
			||||||
	flex: 1;
 | 
						flex: 1;
 | 
				
			||||||
	display: flex;
 | 
						/* background: #eee; */
 | 
				
			||||||
	flex-direction: column;
 | 
						padding: 20px 30px;
 | 
				
			||||||
	/* height: 100%; */
 | 
						overflow-y: auto;
 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
.drawer >>> .visual-part {
 | 
					 | 
				
			||||||
	flex: 1 auto;
 | 
					 | 
				
			||||||
	max-height: 76vh;
 | 
					 | 
				
			||||||
	overflow: hidden;
 | 
					 | 
				
			||||||
	overflow-y: scroll;
 | 
					 | 
				
			||||||
	padding-right: 10px; /* 调整滚动条样式 */
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
.drawer >>> .el-form,
 | 
					 | 
				
			||||||
.drawer >>> .attr-list {
 | 
					 | 
				
			||||||
	padding: 0 16px;
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.drawer-body__footer {
 | 
					.drawer-body__footer {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -17,7 +17,7 @@
 | 
				
			|||||||
				v-if="tableBtn.length"
 | 
									v-if="tableBtn.length"
 | 
				
			||||||
				slot="handleBtn"
 | 
									slot="handleBtn"
 | 
				
			||||||
				label="操作"
 | 
									label="操作"
 | 
				
			||||||
				:width="180"
 | 
									:width="120"
 | 
				
			||||||
				:method-list="tableBtn"
 | 
									:method-list="tableBtn"
 | 
				
			||||||
				@clickBtn="handleTableBtnClick" />
 | 
									@clickBtn="handleTableBtnClick" />
 | 
				
			||||||
		</base-table>
 | 
							</base-table>
 | 
				
			||||||
@@ -48,7 +48,8 @@
 | 
				
			|||||||
		<CustomDialogForm
 | 
							<CustomDialogForm
 | 
				
			||||||
			v-if="addOrUpdateVisible"
 | 
								v-if="addOrUpdateVisible"
 | 
				
			||||||
			ref="addOrUpdate"
 | 
								ref="addOrUpdate"
 | 
				
			||||||
			@refreshDataList="getList" />
 | 
								@refreshDataList="getList"
 | 
				
			||||||
 | 
								@destroy="addOrUpdateVisible = false" />
 | 
				
			||||||
	</div>
 | 
						</div>
 | 
				
			||||||
</template>
 | 
					</template>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -69,12 +70,6 @@ export default {
 | 
				
			|||||||
			addOrUpdateVisible: false,
 | 
								addOrUpdateVisible: false,
 | 
				
			||||||
			searchBarKeys: ['maintenanceStatus', 'createTime', 'equipmentId'],
 | 
								searchBarKeys: ['maintenanceStatus', 'createTime', 'equipmentId'],
 | 
				
			||||||
			tableBtn: [
 | 
								tableBtn: [
 | 
				
			||||||
				this.$auth.hasPermi('equipment:repair:update')
 | 
					 | 
				
			||||||
					? {
 | 
					 | 
				
			||||||
							type: 'detail',
 | 
					 | 
				
			||||||
							btnName: '详情',
 | 
					 | 
				
			||||||
					  }
 | 
					 | 
				
			||||||
					: undefined,
 | 
					 | 
				
			||||||
				this.$auth.hasPermi('equipment:repair:finish')
 | 
									this.$auth.hasPermi('equipment:repair:finish')
 | 
				
			||||||
					? {
 | 
										? {
 | 
				
			||||||
							type: 'finish',
 | 
												type: 'finish',
 | 
				
			||||||
@@ -83,10 +78,16 @@ export default {
 | 
				
			|||||||
					: undefined,
 | 
										: undefined,
 | 
				
			||||||
				this.$auth.hasPermi('equipment:repair:update')
 | 
									this.$auth.hasPermi('equipment:repair:update')
 | 
				
			||||||
					? {
 | 
										? {
 | 
				
			||||||
							type: 'edit',
 | 
												type: 'detail',
 | 
				
			||||||
							btnName: '修改',
 | 
												btnName: '详情',
 | 
				
			||||||
					  }
 | 
										  }
 | 
				
			||||||
					: undefined,
 | 
										: undefined,
 | 
				
			||||||
 | 
									// this.$auth.hasPermi('equipment:repair:update')
 | 
				
			||||||
 | 
									// 	? {
 | 
				
			||||||
 | 
									// 			type: 'edit',
 | 
				
			||||||
 | 
									// 			btnName: '修改',
 | 
				
			||||||
 | 
									// 	  }
 | 
				
			||||||
 | 
									// 	: undefined,
 | 
				
			||||||
				this.$auth.hasPermi('equipment:repair:delete')
 | 
									this.$auth.hasPermi('equipment:repair:delete')
 | 
				
			||||||
					? {
 | 
										? {
 | 
				
			||||||
							type: 'delete',
 | 
												type: 'delete',
 | 
				
			||||||
@@ -99,29 +100,31 @@ export default {
 | 
				
			|||||||
					prop: 'createTime',
 | 
										prop: 'createTime',
 | 
				
			||||||
					label: '添加时间',
 | 
										label: '添加时间',
 | 
				
			||||||
					fixed: true,
 | 
										fixed: true,
 | 
				
			||||||
					width: 180,
 | 
										width: 150,
 | 
				
			||||||
					filter: parseTime,
 | 
										filter: parseTime,
 | 
				
			||||||
				},
 | 
									},
 | 
				
			||||||
				{ prop: 'repairOrderNumber', label: '设备维修单号' },
 | 
									{ prop: 'repairOrderNumber', label: '设备维修单号', minWidth: 100, showOverflowtooltip: true },
 | 
				
			||||||
				{ prop: 'maintenanceStartTime', label: '开始时间', filter: parseTime },
 | 
									{ prop: 'maintenanceStartTime', label: '开始时间', filter: parseTime, minWidth: 150, showOverflowtooltip: true },
 | 
				
			||||||
				{
 | 
									{
 | 
				
			||||||
					prop: 'maintenanceFinishTime',
 | 
										prop: 'maintenanceFinishTime',
 | 
				
			||||||
					label: '结束时间',
 | 
										label: '结束时间',
 | 
				
			||||||
					filter: parseTime,
 | 
										filter: parseTime,
 | 
				
			||||||
 | 
										minWidth: 150,
 | 
				
			||||||
 | 
										showOverflowtooltip: true
 | 
				
			||||||
				},
 | 
									},
 | 
				
			||||||
				{
 | 
									{
 | 
				
			||||||
					prop: 'maintenanceStatus',
 | 
										prop: 'maintenanceStatus',
 | 
				
			||||||
					label: '维修状态',
 | 
										label: '维修状态',
 | 
				
			||||||
					filter: (v) => (v != null ? ['未完成', '完成', '进行中'][v] : ''),
 | 
										filter: (v) => (v != null ? ['未完成', '完成', '进行中'][v] : ''),
 | 
				
			||||||
				},
 | 
									},
 | 
				
			||||||
				{ prop: 'maintenanceDuration', label: '维修时长(h)' },
 | 
									{ prop: 'maintenanceDuration', label: '维修时长(h)', width: 110 },
 | 
				
			||||||
				{ prop: 'lineName', label: '产线' },
 | 
									{ prop: 'lineName', label: '产线' },
 | 
				
			||||||
				{ prop: 'sectionName', label: '工段' },
 | 
									{ prop: 'sectionName', label: '工段' },
 | 
				
			||||||
				{ prop: 'equipmentName', label: '设备名称' },
 | 
									{ prop: 'equipmentName', label: '设备名称', minWidth: 100, showOverflowtooltip: true },
 | 
				
			||||||
				{ prop: 'maintenanceDetail', label: '维修明细' },
 | 
									{ prop: 'maintenanceDetail', label: '维修明细' },
 | 
				
			||||||
				{ prop: 'repairman', label: '维修工' },
 | 
									{ prop: 'repairman', label: '维修工', minWidth: 100, showOverflowtooltip: true },
 | 
				
			||||||
				{ prop: 'repairmanPhone', label: '联系方式' },
 | 
									{ prop: 'repairmanPhone', label: '联系方式', minWidth: 100, showOverflowtooltip: true },
 | 
				
			||||||
				{ prop: 'remark', label: '备注' },
 | 
									{ prop: 'remark', label: '备注', minWidth: 120, showOverflowtooltip: true },
 | 
				
			||||||
			],
 | 
								],
 | 
				
			||||||
			searchBarFormConfig: [
 | 
								searchBarFormConfig: [
 | 
				
			||||||
				{
 | 
									{
 | 
				
			||||||
@@ -176,6 +179,7 @@ export default {
 | 
				
			|||||||
					type: this.$auth.hasPermi('equipment:repair:export') ? 'button' : '',
 | 
										type: this.$auth.hasPermi('equipment:repair:export') ? 'button' : '',
 | 
				
			||||||
					btnName: '导出',
 | 
										btnName: '导出',
 | 
				
			||||||
					name: 'export',
 | 
										name: 'export',
 | 
				
			||||||
 | 
										plain: true,
 | 
				
			||||||
					color: 'warning',
 | 
										color: 'warning',
 | 
				
			||||||
				},
 | 
									},
 | 
				
			||||||
			],
 | 
								],
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -80,6 +80,8 @@
 | 
				
			|||||||
			<el-select
 | 
								<el-select
 | 
				
			||||||
				v-if="open"
 | 
									v-if="open"
 | 
				
			||||||
				style="width: 100%"
 | 
									style="width: 100%"
 | 
				
			||||||
 | 
									filterable
 | 
				
			||||||
 | 
									clearable
 | 
				
			||||||
				v-model="queryParams.equipmentId"
 | 
									v-model="queryParams.equipmentId"
 | 
				
			||||||
				placeholder="请选择一个设备">
 | 
									placeholder="请选择一个设备">
 | 
				
			||||||
				<el-option
 | 
									<el-option
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -290,7 +290,8 @@ export default {
 | 
				
			|||||||
          break;
 | 
					          break;
 | 
				
			||||||
        case '2': // 能源
 | 
					        case '2': // 能源
 | 
				
			||||||
          this.$router.push({
 | 
					          this.$router.push({
 | 
				
			||||||
            path: '/energy/monitoring/energy-report-search?startTime='+this.chooseObj.startTime+'&endTime='+this.chooseObj.endTime
 | 
					            // path: '/energy/monitoring/energy-report-search?startTime='+this.chooseObj.startTime+'&endTime='+this.chooseObj.endTime
 | 
				
			||||||
 | 
					            path: '/energy/base/energy-quantity-realtime?startTime='+this.chooseObj.startTime+'&endTime='+this.chooseObj.endTime
 | 
				
			||||||
          })
 | 
					          })
 | 
				
			||||||
          break;
 | 
					          break;
 | 
				
			||||||
        default:
 | 
					        default:
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -115,12 +115,12 @@ export default {
 | 
				
			|||||||
				vm.$set(
 | 
									vm.$set(
 | 
				
			||||||
					vm.searchBarFormConfig[0],
 | 
										vm.searchBarFormConfig[0],
 | 
				
			||||||
					'defaultSelect',
 | 
										'defaultSelect',
 | 
				
			||||||
					to.params.equipmentCode
 | 
										to.params.equipmentName
 | 
				
			||||||
				);
 | 
									);
 | 
				
			||||||
				vm.$set(
 | 
									vm.$set(
 | 
				
			||||||
					vm.searchBarFormConfig[1],
 | 
										vm.searchBarFormConfig[1],
 | 
				
			||||||
					'defaultSelect',
 | 
										'defaultSelect',
 | 
				
			||||||
					to.params.equipmentName
 | 
										to.params.equipmentCode
 | 
				
			||||||
				);
 | 
									);
 | 
				
			||||||
				vm.handleQuery();
 | 
									vm.handleQuery();
 | 
				
			||||||
			});
 | 
								});
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -33,7 +33,7 @@
 | 
				
			|||||||
							:data-value="fc.id"
 | 
												:data-value="fc.id"
 | 
				
			||||||
							class="factory-list__item"
 | 
												class="factory-list__item"
 | 
				
			||||||
							:class="{ 'is-current': fc.id == currentFactory?.id }">
 | 
												:class="{ 'is-current': fc.id == currentFactory?.id }">
 | 
				
			||||||
							<span>
 | 
												<span :data-value="fc.id">
 | 
				
			||||||
								{{ fc.label }}
 | 
													{{ fc.label }}
 | 
				
			||||||
							</span>
 | 
												</span>
 | 
				
			||||||
							<svg-icon
 | 
												<svg-icon
 | 
				
			||||||
@@ -98,9 +98,7 @@
 | 
				
			|||||||
								</base-table>
 | 
													</base-table>
 | 
				
			||||||
							</el-tab-pane>
 | 
												</el-tab-pane>
 | 
				
			||||||
							<el-tab-pane :label="'\u3000柱状图\u3000'" name="graph">
 | 
												<el-tab-pane :label="'\u3000柱状图\u3000'" name="graph">
 | 
				
			||||||
								<div
 | 
													<div class="graph" style="height: 100%">
 | 
				
			||||||
									class="graph"
 | 
					 | 
				
			||||||
									style="height: 100%;">
 | 
					 | 
				
			||||||
									<!-- graph  -->
 | 
														<!-- graph  -->
 | 
				
			||||||
									<Graph
 | 
														<Graph
 | 
				
			||||||
										v-if="list.length"
 | 
															v-if="list.length"
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -11,7 +11,7 @@
 | 
				
			|||||||
            <base-table class="base-table__margin" :table-props="productProps" :page="1" :limit="10" :table-data="list">
 | 
					            <base-table class="base-table__margin" :table-props="productProps" :page="1" :limit="10" :table-data="list">
 | 
				
			||||||
            </base-table>
 | 
					            </base-table>
 | 
				
			||||||
            <div v-for="(item,index) in downProps" :key="index">
 | 
					            <div v-for="(item,index) in downProps" :key="index">
 | 
				
			||||||
              <div class="blue-title">工单:{{ list[index].workOrderName }}</div>
 | 
					              <div class="blue-title">工单名称:{{ list[index].workOrderName }}</div>
 | 
				
			||||||
              <base-table class="base-table__margin" :table-props="item" :page="1" :limit="10"
 | 
					              <base-table class="base-table__margin" :table-props="item" :page="1" :limit="10"
 | 
				
			||||||
                :table-data="downList[index]">
 | 
					                :table-data="downList[index]">
 | 
				
			||||||
              </base-table>
 | 
					              </base-table>
 | 
				
			||||||
@@ -214,7 +214,7 @@ export default {
 | 
				
			|||||||
        {
 | 
					        {
 | 
				
			||||||
          // width: 160,
 | 
					          // width: 160,
 | 
				
			||||||
          prop: 'workOrderName',
 | 
					          prop: 'workOrderName',
 | 
				
			||||||
          label: '工单名',
 | 
					          label: '工单名称',
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
        ...this.dynamicProps,
 | 
					        ...this.dynamicProps,
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -9,8 +9,8 @@
 | 
				
			|||||||
  <el-form ref="form" :model="innerDataForm" label-width="100px" v-loading="formLoading">
 | 
					  <el-form ref="form" :model="innerDataForm" label-width="100px" v-loading="formLoading">
 | 
				
			||||||
    <el-row :gutter="20">
 | 
					    <el-row :gutter="20">
 | 
				
			||||||
      <el-col :span="12">
 | 
					      <el-col :span="12">
 | 
				
			||||||
        <el-form-item label="工单号" prop="workOrderId" :rules="[{ required: true, message: '不能为空', trigger: 'blur' }]">
 | 
					        <el-form-item label="工单名称" prop="workOrderId" :rules="[{ required: true, message: '不能为空', trigger: 'blur' }]">
 | 
				
			||||||
          <el-select v-model="innerDataForm.workOrderId" placeholder="请选择工单号" filterable clearable>
 | 
					          <el-select v-model="innerDataForm.workOrderId" placeholder="请选择工单名称" filterable clearable>
 | 
				
			||||||
            <el-option v-for="opt in workOrderList" :key="opt.value" :label="opt.label" :value="opt.value" />
 | 
					            <el-option v-for="opt in workOrderList" :key="opt.value" :label="opt.label" :value="opt.value" />
 | 
				
			||||||
          </el-select>
 | 
					          </el-select>
 | 
				
			||||||
        </el-form-item>
 | 
					        </el-form-item>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -141,8 +141,8 @@ export default {
 | 
				
			|||||||
			searchBarFormConfig: [
 | 
								searchBarFormConfig: [
 | 
				
			||||||
				{
 | 
									{
 | 
				
			||||||
					type: 'select',
 | 
										type: 'select',
 | 
				
			||||||
					label: '工单号',
 | 
					          label: '工单名称',
 | 
				
			||||||
          placeholder: '请选择工单号',
 | 
					          placeholder: '请选择工单名称',
 | 
				
			||||||
					param: 'workOrderId',
 | 
										param: 'workOrderId',
 | 
				
			||||||
          selectOptions: [],
 | 
					          selectOptions: [],
 | 
				
			||||||
          filterable:true
 | 
					          filterable:true
 | 
				
			||||||
@@ -215,7 +215,7 @@ export default {
 | 
				
			|||||||
        {
 | 
					        {
 | 
				
			||||||
          // width: 128,
 | 
					          // width: 128,
 | 
				
			||||||
          prop: 'workOrderName',
 | 
					          prop: 'workOrderName',
 | 
				
			||||||
          label: '工单Id',
 | 
					          label: '工单名称',
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
				{
 | 
									{
 | 
				
			||||||
					// width: 128,
 | 
										// width: 128,
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -67,8 +67,8 @@ export default {
 | 
				
			|||||||
      searchBarFormConfig: [
 | 
					      searchBarFormConfig: [
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
          type: 'select',
 | 
					          type: 'select',
 | 
				
			||||||
          label: '工单号',
 | 
					          label: '工单名称',
 | 
				
			||||||
          placeholder: '请选择工单号',
 | 
					          placeholder: '请选择工单名称',
 | 
				
			||||||
          param: 'workOrderIdList',
 | 
					          param: 'workOrderIdList',
 | 
				
			||||||
          selectOptions: [],
 | 
					          selectOptions: [],
 | 
				
			||||||
          multiple: true,
 | 
					          multiple: true,
 | 
				
			||||||
@@ -205,8 +205,8 @@ export default {
 | 
				
			|||||||
      return [
 | 
					      return [
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
          // width: 128,
 | 
					          // width: 128,
 | 
				
			||||||
          prop: 'workOrderId',
 | 
					          prop: 'workOrderName',
 | 
				
			||||||
          label: '工单号',
 | 
					          label: '工单名称',
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
          // width: 128,
 | 
					          // width: 128,
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user