Compare commits
	
		
			8 Commits
		
	
	
		
			projects/q
			...
			projects/q
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 1a1a3a9129 | |||
| e91fcab0c8 | |||
| 
						 | 
					1a0d786774 | ||
| 
						 | 
					1b6e6702ed | ||
| 
						 | 
					f23e025974 | ||
| 
						 | 
					d77bebd375 | ||
| 4225ff35ae | |||
| dd85c50077 | 
@@ -37,7 +37,9 @@ export default {
 | 
				
			|||||||
        this.outputData.push(item.outputNum)
 | 
					        this.outputData.push(item.outputNum)
 | 
				
			||||||
        this.goodRateData.push(item.goodRate)
 | 
					        this.goodRateData.push(item.goodRate)
 | 
				
			||||||
      })
 | 
					      })
 | 
				
			||||||
 | 
					      this.$nextTick(()=>{
 | 
				
			||||||
      this.initChart();
 | 
					      this.initChart();
 | 
				
			||||||
 | 
					      })
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  data() {
 | 
					  data() {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,17 +1,20 @@
 | 
				
			|||||||
<template>
 | 
					<template>
 | 
				
			||||||
	<div ref='dataBoardBoxB' class='dataBoardBoxB'>
 | 
						<div ref="dataBoardBoxB" class="dataBoardBoxB">
 | 
				
			||||||
		<div id="dataBoardBox" class='dataBoardBox' style="width: 1920px;height: 1080px;" :style="{ transform: 'scale(' + scaleNum + ')' }">
 | 
							<div
 | 
				
			||||||
 | 
								id="dataBoardBox"
 | 
				
			||||||
 | 
								class="dataBoardBox"
 | 
				
			||||||
 | 
								style="width: 1920px; height: 1080px"
 | 
				
			||||||
 | 
								:style="{ transform: 'scale(' + scaleNum + ')' }">
 | 
				
			||||||
			<DataBoardHeader
 | 
								<DataBoardHeader
 | 
				
			||||||
				:is-full-screen="isFullScreen"
 | 
									:is-full-screen="isFullScreen"
 | 
				
			||||||
				@screenfullChange="screenfullChange"
 | 
									@screenfullChange="screenfullChange" />
 | 
				
			||||||
			/>
 | 
								<LeftTop :dataObj="dataObj" />
 | 
				
			||||||
			<LeftTop :dataObj='dataObj'/>
 | 
								<LeftBottom :dataObj="dataObj" />
 | 
				
			||||||
			<LeftBottom :dataObj='dataObj'/>
 | 
								<CenterTop :scaleNum="scaleNum" :dataObj="dataObj" />
 | 
				
			||||||
			<CenterTop :scaleNum='scaleNum' :dataObj='dataObj'/>
 | 
								<CenterBottomL :dataObj="dataObj" />
 | 
				
			||||||
			<CenterBottomL :dataObj='dataObj'/>
 | 
								<CenterBottomR :dataObj="dataObj" />
 | 
				
			||||||
			<CenterBottomR :dataObj='dataObj'/>
 | 
								<RightTop :dataObj="dataObj" />
 | 
				
			||||||
			<RightTop :dataObj='dataObj'/>
 | 
								<RightBottom :dataObj="dataObj" />
 | 
				
			||||||
			<RightBottom :dataObj='dataObj'/>
 | 
					 | 
				
			||||||
		</div>
 | 
							</div>
 | 
				
			||||||
	</div>
 | 
						</div>
 | 
				
			||||||
</template>
 | 
					</template>
 | 
				
			||||||
@@ -28,57 +31,74 @@ import RightBottom from './components/RightBottom.vue';
 | 
				
			|||||||
import { debounce } from '@/utils/debounce';
 | 
					import { debounce } from '@/utils/debounce';
 | 
				
			||||||
import screenfull from 'screenfull';
 | 
					import screenfull from 'screenfull';
 | 
				
			||||||
import { getAccessToken } from '@/utils/auth';
 | 
					import { getAccessToken } from '@/utils/auth';
 | 
				
			||||||
import store from "@/store";
 | 
					import store from '@/store';
 | 
				
			||||||
export default {
 | 
					export default {
 | 
				
			||||||
	name: 'DataBoard',
 | 
						name: 'DataBoard',
 | 
				
			||||||
	components: { DataBoardHeader,LeftTop,LeftBottom,CenterTop,CenterBottomL,CenterBottomR,RightTop,RightBottom },
 | 
						components: {
 | 
				
			||||||
 | 
							DataBoardHeader,
 | 
				
			||||||
 | 
							LeftTop,
 | 
				
			||||||
 | 
							LeftBottom,
 | 
				
			||||||
 | 
							CenterTop,
 | 
				
			||||||
 | 
							CenterBottomL,
 | 
				
			||||||
 | 
							CenterBottomR,
 | 
				
			||||||
 | 
							RightTop,
 | 
				
			||||||
 | 
							RightBottom,
 | 
				
			||||||
 | 
						},
 | 
				
			||||||
	props: {},
 | 
						props: {},
 | 
				
			||||||
	data() {
 | 
						data() {
 | 
				
			||||||
		return {
 | 
							return {
 | 
				
			||||||
			isFullScreen: false,
 | 
								isFullScreen: false,
 | 
				
			||||||
			scaleNum: 0.8,
 | 
								scaleNum: 0.8,
 | 
				
			||||||
			dataObj:{},
 | 
								dataObj: {},
 | 
				
			||||||
			sseReader: null, // 保存流读取器
 | 
								sseReader: null, // 保存流读取器
 | 
				
			||||||
			abortController: null, // 用于中止 fetch 请求
 | 
								abortController: null, // 用于中止 fetch 请求
 | 
				
			||||||
			retryCount: 0, // 当前重试次数
 | 
								retryCount: 0, // 当前重试次数
 | 
				
			||||||
      isDestroyed: false      // 标记组件是否已销毁
 | 
								isDestroyed: false, // 标记组件是否已销毁
 | 
				
			||||||
		};
 | 
							};
 | 
				
			||||||
	},
 | 
						},
 | 
				
			||||||
	created() {
 | 
						created() {
 | 
				
			||||||
    this.init()
 | 
							this.init();
 | 
				
			||||||
	},
 | 
						},
 | 
				
			||||||
	mounted() {
 | 
						mounted() {
 | 
				
			||||||
		this.boxReset = debounce(() => {
 | 
							this.boxReset = debounce(() => {
 | 
				
			||||||
      this.resetSize()
 | 
								this.resetSize();
 | 
				
			||||||
    }, 300)
 | 
							}, 300);
 | 
				
			||||||
    this.boxReset()
 | 
							this.boxReset();
 | 
				
			||||||
		window.addEventListener('resize', () => {
 | 
							window.addEventListener('resize', () => {
 | 
				
			||||||
      this.boxReset()
 | 
								this.boxReset();
 | 
				
			||||||
    })
 | 
							});
 | 
				
			||||||
		this.getData()
 | 
							this.getData();
 | 
				
			||||||
	},
 | 
						},
 | 
				
			||||||
	beforeDestroy() {
 | 
						beforeDestroy() {
 | 
				
			||||||
		this.closeSSE();
 | 
							this.closeSSE();
 | 
				
			||||||
	},
 | 
						},
 | 
				
			||||||
 | 
						destroyed() {
 | 
				
			||||||
 | 
							window.removeEventListener('resize', this.boxReset);
 | 
				
			||||||
 | 
						},
 | 
				
			||||||
	computed: {
 | 
						computed: {
 | 
				
			||||||
		sidebarOpened() {
 | 
							sidebarOpened() {
 | 
				
			||||||
			return this.$store.state.app.sidebar.opened
 | 
								return this.$store.state.app.sidebar.opened;
 | 
				
			||||||
		}
 | 
							},
 | 
				
			||||||
	},
 | 
						},
 | 
				
			||||||
	watch: {
 | 
						watch: {
 | 
				
			||||||
		sidebarOpened(newVal, oldVal) {
 | 
							sidebarOpened(newVal, oldVal) {
 | 
				
			||||||
			this.boxReset()
 | 
								this.boxReset();
 | 
				
			||||||
		}
 | 
							},
 | 
				
			||||||
	},
 | 
						},
 | 
				
			||||||
	methods: {
 | 
						methods: {
 | 
				
			||||||
		async getData() {
 | 
							async getData() {
 | 
				
			||||||
			let _this = this;
 | 
								let _this = this;
 | 
				
			||||||
			if (_this.isDestroyed) return;
 | 
								if (_this.isDestroyed) return;
 | 
				
			||||||
			const url = process.env.VUE_APP_BASE_API+'/admin-api/monitoring/message/subscribe/'+store.getters.userId+'-'+Date.now();
 | 
								const url =
 | 
				
			||||||
			const token = getAccessToken()
 | 
									process.env.VUE_APP_BASE_API +
 | 
				
			||||||
 | 
									'/admin-api/monitoring/message/subscribe/' +
 | 
				
			||||||
 | 
									store.getters.userId +
 | 
				
			||||||
 | 
									'-' +
 | 
				
			||||||
 | 
									Date.now();
 | 
				
			||||||
 | 
								const token = getAccessToken();
 | 
				
			||||||
			const headers = new Headers({
 | 
								const headers = new Headers({
 | 
				
			||||||
        'Authorization': `Bearer ${token}`,
 | 
									Authorization: `Bearer ${token}`,
 | 
				
			||||||
        'Content-Type': 'text/event-stream'
 | 
									'Content-Type': 'text/event-stream',
 | 
				
			||||||
			});
 | 
								});
 | 
				
			||||||
			try {
 | 
								try {
 | 
				
			||||||
				// 创建中止控制器
 | 
									// 创建中止控制器
 | 
				
			||||||
@@ -87,12 +107,14 @@ export default {
 | 
				
			|||||||
				const response = await fetch(url, {
 | 
									const response = await fetch(url, {
 | 
				
			||||||
					method: 'GET',
 | 
										method: 'GET',
 | 
				
			||||||
					headers: headers,
 | 
										headers: headers,
 | 
				
			||||||
          signal: _this.abortController.signal // 绑定中止信号
 | 
										signal: _this.abortController.signal, // 绑定中止信号
 | 
				
			||||||
				});
 | 
									});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
				// 获取流读取器
 | 
									// 获取流读取器
 | 
				
			||||||
				_this.sseReader = response.body.getReader();
 | 
									_this.sseReader = response.body.getReader();
 | 
				
			||||||
				const decoder = new TextDecoder();
 | 
									const decoder = new TextDecoder();
 | 
				
			||||||
 | 
									let buffer = '';
 | 
				
			||||||
 | 
									let receivedBytes = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
				// 持续读取流数据
 | 
									// 持续读取流数据
 | 
				
			||||||
				while (true) {
 | 
									while (true) {
 | 
				
			||||||
@@ -102,13 +124,34 @@ export default {
 | 
				
			|||||||
						_this.handleReconnect(); // 触发重连
 | 
											_this.handleReconnect(); // 触发重连
 | 
				
			||||||
						break;
 | 
											break;
 | 
				
			||||||
					}
 | 
										}
 | 
				
			||||||
          // 处理 SSE 事件数据
 | 
										// const data = decoder.decode(value);
 | 
				
			||||||
          const data = decoder.decode(value);
 | 
										// console.log('收到消息:', data);
 | 
				
			||||||
          console.log('收到消息:', data);
 | 
					
 | 
				
			||||||
					if (_this.isValidData(data)){
 | 
										receivedBytes += value.length;
 | 
				
			||||||
						_this.upDateMsg(data);
 | 
										console.log(
 | 
				
			||||||
 | 
											`收到数据块: ${value.length} 字节, 累计: ${receivedBytes} 字节`
 | 
				
			||||||
 | 
										);
 | 
				
			||||||
 | 
										const chunk = decoder.decode(value, { stream: true });
 | 
				
			||||||
 | 
										buffer += chunk;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
										// 处理完整的消息
 | 
				
			||||||
 | 
										const messages = buffer.split('\n\n'); // SSE 消息以双换行分隔
 | 
				
			||||||
 | 
										buffer = messages.pop() || ''; // 保留最后一个不完整的消息
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
										for (const message of messages) {
 | 
				
			||||||
 | 
											if (_this.isValidData(message)) {
 | 
				
			||||||
 | 
												// console.log('完整 SSE 消息:', message);
 | 
				
			||||||
 | 
													_this.upDateMsg(message);
 | 
				
			||||||
						}
 | 
											}
 | 
				
			||||||
					}
 | 
										}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
										// 处理 SSE 事件数据
 | 
				
			||||||
 | 
										// const data = decoder.decode(value);
 | 
				
			||||||
 | 
										// console.log('收到消息:', data);
 | 
				
			||||||
 | 
										// if (_this.isValidData(data)){
 | 
				
			||||||
 | 
										// 	_this.upDateMsg(data);
 | 
				
			||||||
 | 
										// }
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
			} catch (error) {
 | 
								} catch (error) {
 | 
				
			||||||
				// 主动中止的请求不报错
 | 
									// 主动中止的请求不报错
 | 
				
			||||||
				if (error.name === 'AbortError') return;
 | 
									if (error.name === 'AbortError') return;
 | 
				
			||||||
@@ -141,80 +184,82 @@ export default {
 | 
				
			|||||||
				console.error('SSE 重连次数已达上限');
 | 
									console.error('SSE 重连次数已达上限');
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
		isValidData (data) {
 | 
							isValidData(data) {
 | 
				
			||||||
			return data.trim().startsWith('data:{') && !data.includes('heartbeat');
 | 
								return data.trim().startsWith('data:{') && !data.includes('heartbeat');
 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
		upDateMsg(data) {
 | 
							upDateMsg(data) {
 | 
				
			||||||
			const jsonStr = data.replace(/^data:/, '').trim();
 | 
								const jsonStr = data.replace(/^data:/, '').trim();
 | 
				
			||||||
 | 
								console.log('jsonStr', jsonStr);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			try {
 | 
								try {
 | 
				
			||||||
				const dataObj = JSON.parse(jsonStr);
 | 
									const dataObj = JSON.parse(jsonStr);
 | 
				
			||||||
				this.dataObj = dataObj
 | 
									this.dataObj = dataObj;
 | 
				
			||||||
				console.log('dataObj',this.dataObj)
 | 
									console.log('dataObj', this.dataObj);
 | 
				
			||||||
			} catch (e) {
 | 
								} catch (e) {
 | 
				
			||||||
				console.error('JSON 解析失败:', e);
 | 
									console.error('JSON 解析失败:', e);
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
		change() {
 | 
							change() {
 | 
				
			||||||
      this.isFullScreen = screenfull.isFullscreen
 | 
								this.isFullScreen = screenfull.isFullscreen;
 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
		init() {
 | 
							init() {
 | 
				
			||||||
			if (!screenfull.isEnabled) {
 | 
								if (!screenfull.isEnabled) {
 | 
				
			||||||
				this.$message({
 | 
									this.$message({
 | 
				
			||||||
					message: 'you browser can not work',
 | 
										message: 'you browser can not work',
 | 
				
			||||||
          type: 'warning'
 | 
										type: 'warning',
 | 
				
			||||||
        })
 | 
									});
 | 
				
			||||||
        return false
 | 
									return false;
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
      screenfull.on('change', this.change)
 | 
								screenfull.on('change', this.change);
 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
		destroy() {
 | 
							destroy() {
 | 
				
			||||||
			if (!screenfull.isEnabled) {
 | 
								if (!screenfull.isEnabled) {
 | 
				
			||||||
				this.$message({
 | 
									this.$message({
 | 
				
			||||||
					message: 'you browser can not work',
 | 
										message: 'you browser can not work',
 | 
				
			||||||
          type: 'warning'
 | 
										type: 'warning',
 | 
				
			||||||
        })
 | 
									});
 | 
				
			||||||
        return false
 | 
									return false;
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
      screenfull.off('change', this.change)
 | 
								screenfull.off('change', this.change);
 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
		// 全屏
 | 
							// 全屏
 | 
				
			||||||
		screenfullChange() {
 | 
							screenfullChange() {
 | 
				
			||||||
			if (!screenfull.isEnabled) {
 | 
								if (!screenfull.isEnabled) {
 | 
				
			||||||
				this.$message({
 | 
									this.$message({
 | 
				
			||||||
					message: 'you browser can not work',
 | 
										message: 'you browser can not work',
 | 
				
			||||||
          type: 'warning'
 | 
										type: 'warning',
 | 
				
			||||||
        })
 | 
									});
 | 
				
			||||||
        return false
 | 
									return false;
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
      screenfull.toggle(this.$refs.dataBoardBoxB)
 | 
								screenfull.toggle(this.$refs.dataBoardBoxB);
 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
		resetSize() {
 | 
							resetSize() {
 | 
				
			||||||
      const dataBoardBox = document.getElementById('dataBoardBox')
 | 
								const dataBoardBox = document.getElementById('dataBoardBox');
 | 
				
			||||||
      const rw = parseFloat(window.innerWidth)
 | 
								const rw = parseFloat(window.innerWidth);
 | 
				
			||||||
			const rh = parseFloat(window.innerHeight)
 | 
								const rh = parseFloat(window.innerHeight);
 | 
				
			||||||
      const bw = parseFloat(dataBoardBox.style.width)
 | 
								const bw = parseFloat(dataBoardBox.style.width);
 | 
				
			||||||
      const bh = parseFloat(dataBoardBox.style.height)
 | 
								const bh = parseFloat(dataBoardBox.style.height);
 | 
				
			||||||
      let wx = 0
 | 
								let wx = 0;
 | 
				
			||||||
			let hy = 0
 | 
								let hy = 0;
 | 
				
			||||||
			if (screenfull.isFullscreen) {
 | 
								if (screenfull.isFullscreen) {
 | 
				
			||||||
        wx = rw / bw
 | 
									wx = rw / bw;
 | 
				
			||||||
				hy = rh / bh
 | 
									hy = rh / bh;
 | 
				
			||||||
			} else {
 | 
								} else {
 | 
				
			||||||
				if (this.$store.state.app.sidebar.opened) {
 | 
									if (this.$store.state.app.sidebar.opened) {
 | 
				
			||||||
          wx = (rw - 283) / bw
 | 
										wx = (rw - 283) / bw;
 | 
				
			||||||
				} else {
 | 
									} else {
 | 
				
			||||||
          wx = (rw - 88) / bw
 | 
										wx = (rw - 88) / bw;
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
				hy = (rh - 150) / bh
 | 
									hy = (rh - 150) / bh;
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
      this.scaleNum = wx < hy ? wx : hy
 | 
								this.scaleNum = wx < hy ? wx : hy;
 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
	},
 | 
						},
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
</script>
 | 
					</script>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<style scoped lang="scss">
 | 
					<style scoped lang="scss">
 | 
				
			||||||
	.dataBoardBoxB {
 | 
					.dataBoardBoxB {
 | 
				
			||||||
	width: 100%;
 | 
						width: 100%;
 | 
				
			||||||
	height: calc(100vh - 150px);
 | 
						height: calc(100vh - 150px);
 | 
				
			||||||
	position: relative;
 | 
						position: relative;
 | 
				
			||||||
@@ -230,5 +275,5 @@ export default {
 | 
				
			|||||||
		background-position: 0 0;
 | 
							background-position: 0 0;
 | 
				
			||||||
		overflow: auto;
 | 
							overflow: auto;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	}
 | 
					}
 | 
				
			||||||
</style>
 | 
					</style>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -48,7 +48,7 @@ const tableProps = [
 | 
				
			|||||||
		prop: 'reportDate',
 | 
							prop: 'reportDate',
 | 
				
			||||||
		label: '日期',
 | 
							label: '日期',
 | 
				
			||||||
		width: 130,
 | 
							width: 130,
 | 
				
			||||||
    fixed: true
 | 
					    fixed: true,
 | 
				
			||||||
	},
 | 
						},
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
		prop: 'factoryName',
 | 
							prop: 'factoryName',
 | 
				
			||||||
@@ -290,6 +290,10 @@ export default {
 | 
				
			|||||||
					type: 'select',
 | 
										type: 'select',
 | 
				
			||||||
					label: '维度',
 | 
										label: '维度',
 | 
				
			||||||
          selectOptions: [
 | 
					          selectOptions: [
 | 
				
			||||||
 | 
					            // {
 | 
				
			||||||
 | 
					            //   id: '0',
 | 
				
			||||||
 | 
					            //   name: '班',
 | 
				
			||||||
 | 
					            // },
 | 
				
			||||||
						{
 | 
											{
 | 
				
			||||||
							id: 1,
 | 
												id: 1,
 | 
				
			||||||
							name: '日',
 | 
												name: '日',
 | 
				
			||||||
@@ -414,13 +418,17 @@ export default {
 | 
				
			|||||||
		buttonClick(val) {
 | 
							buttonClick(val) {
 | 
				
			||||||
			switch (val.btnName) {
 | 
								switch (val.btnName) {
 | 
				
			||||||
        case 'search':
 | 
					        case 'search':
 | 
				
			||||||
 | 
					
 | 
				
			||||||
					this.listQuery.pageNo = 1;
 | 
										this.listQuery.pageNo = 1;
 | 
				
			||||||
					this.listQuery.pageSize = 10;
 | 
										this.listQuery.pageSize = 10;
 | 
				
			||||||
					this.listQuery.factoryId = val.factoryId || undefined;
 | 
										this.listQuery.factoryId = val.factoryId || undefined;
 | 
				
			||||||
          this.listQuery.lineId = val.lineId ? [val.lineId] : [];
 | 
					          this.listQuery.lineId = val.lineId ? [val.lineId] : [];
 | 
				
			||||||
					this.listQuery.reportType = val.reportType || undefined;
 | 
					          console.log(val.reportType);
 | 
				
			||||||
 | 
					          this.listQuery.reportType = val.reportType ? Number(val.reportType) :undefined
 | 
				
			||||||
					this.listQuery.startTime = val.timeVal ? val.timeVal[0] : undefined;
 | 
										this.listQuery.startTime = val.timeVal ? val.timeVal[0] : undefined;
 | 
				
			||||||
          this.listQuery.endTime = val.timeVal ? val.timeVal[1] : undefined;
 | 
					          this.listQuery.endTime = val.timeVal ? val.timeVal[1] : undefined;
 | 
				
			||||||
 | 
					          console.log(this.listQuery.reportType);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
					this.getDataList();
 | 
										this.getDataList();
 | 
				
			||||||
					break;
 | 
										break;
 | 
				
			||||||
				case 'export':
 | 
									case 'export':
 | 
				
			||||||
@@ -433,10 +441,41 @@ export default {
 | 
				
			|||||||
		// 获取数据列表
 | 
							// 获取数据列表
 | 
				
			||||||
		getDataList() {
 | 
							getDataList() {
 | 
				
			||||||
			this.dataListLoading = true;
 | 
								this.dataListLoading = true;
 | 
				
			||||||
			const arr = ['日', '周', '月', '年'];
 | 
					      const arr = [
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          id: 0,
 | 
				
			||||||
 | 
					          name: '班',
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          id: 1,
 | 
				
			||||||
 | 
					          name: '日',
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          id: 2,
 | 
				
			||||||
 | 
					          name: '周',
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          id: 3,
 | 
				
			||||||
 | 
					          name: '月',
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          id: 4,
 | 
				
			||||||
 | 
					          name: '年',
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					      ]
 | 
				
			||||||
 | 
					      const reportTypeNameMap = arr.reduce((map, item) => {
 | 
				
			||||||
 | 
					        map[item.id] = item.name;
 | 
				
			||||||
 | 
					        return map;
 | 
				
			||||||
 | 
					      }, {});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			this.urlOptions.getDataListURL(this.listQuery).then((response) => {
 | 
								this.urlOptions.getDataListURL(this.listQuery).then((response) => {
 | 
				
			||||||
        this.tableData = response.data.list.map((item, index) => {
 | 
					        this.tableData = response.data.list.map((item, index) => {
 | 
				
			||||||
					item.reportType = arr[item.reportType - 1];
 | 
					          const typeId = item.reportType;
 | 
				
			||||||
 | 
					          item.reportType = reportTypeNameMap[typeId] || '未知';
 | 
				
			||||||
 | 
					          // item.reportType = arr[item.reportType - 1];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					          item.reportDate = item.reportDate;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
					item.originalLossNum = item.original?.lossNum;
 | 
										item.originalLossNum = item.original?.lossNum;
 | 
				
			||||||
					item.originalLossArea = item.original?.lossArea;
 | 
										item.originalLossArea = item.original?.lossArea;
 | 
				
			||||||
					item.edgeLossNum = item.edge?.lossNum;
 | 
										item.edgeLossNum = item.edge?.lossNum;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -305,7 +305,7 @@ export default {
 | 
				
			|||||||
					this.startTime = new Date(payload.recordTime)
 | 
										this.startTime = new Date(payload.recordTime)
 | 
				
			||||||
					this.queryParams.lineId = payload.lineId || null;
 | 
										this.queryParams.lineId = payload.lineId || null;
 | 
				
			||||||
					this.queryParams.sectionId = payload.sectionId || null;
 | 
										this.queryParams.sectionId = payload.sectionId || null;
 | 
				
			||||||
					this.queryParams.equipmentId = payload.equipmentId || null;
 | 
					          this.queryParams.equipmentId = payload.equipmentId ? Number(payload.equipmentId) : undefined
 | 
				
			||||||
					this.queryParams.recordTime = payload.recordTime
 | 
										this.queryParams.recordTime = payload.recordTime
 | 
				
			||||||
						? [
 | 
											? [
 | 
				
			||||||
							payload.recordTime,
 | 
												payload.recordTime,
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -132,7 +132,7 @@ export default {
 | 
				
			|||||||
				},
 | 
									},
 | 
				
			||||||
			],
 | 
								],
 | 
				
			||||||
			queryParams: {
 | 
								queryParams: {
 | 
				
			||||||
				equipmentId: null,
 | 
									equipmentId: undefined,
 | 
				
			||||||
				recordTime: null,
 | 
									recordTime: null,
 | 
				
			||||||
			},
 | 
								},
 | 
				
			||||||
			graphList: [],
 | 
								graphList: [],
 | 
				
			||||||
@@ -153,7 +153,7 @@ export default {
 | 
				
			|||||||
		this.$nextTick(() => {
 | 
							this.$nextTick(() => {
 | 
				
			||||||
			this.$refs['search-bar'].formInline.recordTime = formattedDate;
 | 
								this.$refs['search-bar'].formInline.recordTime = formattedDate;
 | 
				
			||||||
		});
 | 
							});
 | 
				
			||||||
		this.queryParams.equipmentId = Number(this.$route.query.eqid);
 | 
					    this.queryParams.equipmentId = this.$route.query.eqid? Number(this.$route.query.eqid): undefined
 | 
				
			||||||
		this.startTime = new Date(formattedDate);
 | 
							this.startTime = new Date(formattedDate);
 | 
				
			||||||
		this.queryParams.recordTime = formattedDate
 | 
							this.queryParams.recordTime = formattedDate
 | 
				
			||||||
			? [
 | 
								? [
 | 
				
			||||||
@@ -207,7 +207,7 @@ export default {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
		/** 重置查询条件 */
 | 
							/** 重置查询条件 */
 | 
				
			||||||
		initQuery() {
 | 
							initQuery() {
 | 
				
			||||||
			this.queryParams.equipmentId = null;
 | 
								this.queryParams.equipmentId = undefined;
 | 
				
			||||||
			this.queryParams.recordTime = null;
 | 
								this.queryParams.recordTime = null;
 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -251,7 +251,7 @@ export default {
 | 
				
			|||||||
		},
 | 
							},
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		handleSearchBarBtnClick({ btnName, ...payload }) {
 | 
							handleSearchBarBtnClick({ btnName, ...payload }) {
 | 
				
			||||||
      this.queryParams.equipmentId = Number(this.$route.query.eqid);
 | 
					      this.queryParams.equipmentId = this.$route.query.eqid ? Number(this.$route.query.eqid) :undefined
 | 
				
			||||||
			switch (btnName) {
 | 
								switch (btnName) {
 | 
				
			||||||
				case 'search':
 | 
									case 'search':
 | 
				
			||||||
					if (!payload.recordTime || payload.recordTime.length <= 0) {
 | 
										if (!payload.recordTime || payload.recordTime.length <= 0) {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -248,12 +248,11 @@ export default {
 | 
				
			|||||||
				this.lineArr = response.data;
 | 
									this.lineArr = response.data;
 | 
				
			||||||
				this.lineArr.forEach((item, index) => {
 | 
									this.lineArr.forEach((item, index) => {
 | 
				
			||||||
					const num = [
 | 
										const num = [
 | 
				
			||||||
						'',
 | 
											'20001',
 | 
				
			||||||
						'1672847052717821953',
 | 
											'20002',
 | 
				
			||||||
						'1672847052717821954',
 | 
											'20003',
 | 
				
			||||||
						'1686260211054157825',
 | 
											'20004',
 | 
				
			||||||
						'1701892552632770122',
 | 
											'20005',
 | 
				
			||||||
						'1714562503683465331',
 | 
					 | 
				
			||||||
					].indexOf(item.id);
 | 
										].indexOf(item.id);
 | 
				
			||||||
					if (num > 0) {
 | 
										if (num > 0) {
 | 
				
			||||||
						item.num = num;
 | 
											item.num = num;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -260,14 +260,16 @@ export default {
 | 
				
			|||||||
        // Create a new array by duplicating each item
 | 
					        // Create a new array by duplicating each item
 | 
				
			||||||
        const duplicatedArr = [];
 | 
					        const duplicatedArr = [];
 | 
				
			||||||
        this.lineArr.forEach((item, index) => {
 | 
					        this.lineArr.forEach((item, index) => {
 | 
				
			||||||
 | 
					          console.log(item,'item');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
          // Process original item
 | 
					          // Process original item
 | 
				
			||||||
          const num = [
 | 
					          const num = [
 | 
				
			||||||
            '',
 | 
					            '',
 | 
				
			||||||
            '1672847052717821953',
 | 
					            20001,
 | 
				
			||||||
            '1672847052717821954',
 | 
					            20002,
 | 
				
			||||||
            '1686260211054157825',
 | 
					            20003,
 | 
				
			||||||
            '1701892552632770122',
 | 
					            20004,
 | 
				
			||||||
            '1714562503683465331',
 | 
					            20005,
 | 
				
			||||||
          ].indexOf(item.id);
 | 
					          ].indexOf(item.id);
 | 
				
			||||||
          if (num > 0) {
 | 
					          if (num > 0) {
 | 
				
			||||||
            // Original item with copy=1
 | 
					            // Original item with copy=1
 | 
				
			||||||
 
 | 
				
			|||||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
		Reference in New Issue
	
	Block a user