forked from mt-fe-group/mt-yd-ui
		
	update 产线实时
This commit is contained in:
		@@ -38,7 +38,7 @@ export default {
 | 
			
		||||
	},
 | 
			
		||||
	created() {
 | 
			
		||||
		this.clearData()
 | 
			
		||||
		this.fetchList('equipment').then(({ data: res }) => {
 | 
			
		||||
		this.fetchList().then(({ data: res }) => {
 | 
			
		||||
			this.testData = res.data.filter(item => !!item.equDet)
 | 
			
		||||
			this.handleData()
 | 
			
		||||
		})
 | 
			
		||||
@@ -48,7 +48,7 @@ export default {
 | 
			
		||||
				duration: 1500,
 | 
			
		||||
				onClose: () => {
 | 
			
		||||
					this.clearData()
 | 
			
		||||
					fetchList('equipment').then(({ data: res }) => {
 | 
			
		||||
					this.fetchList().then(({ data: res }) => {
 | 
			
		||||
						this.testData = res.data.filter(item => !!item.equDet)
 | 
			
		||||
						this.handleData()
 | 
			
		||||
					})
 | 
			
		||||
@@ -87,7 +87,7 @@ export default {
 | 
			
		||||
		},
 | 
			
		||||
 | 
			
		||||
		expandDataStepOne() {
 | 
			
		||||
			console.log('testdata: ', this.testData)
 | 
			
		||||
			// console.log('testdata: ', this.testData)
 | 
			
		||||
			this.stepOneArray = this.testData.map(item => {
 | 
			
		||||
				if (item.equDet) {
 | 
			
		||||
					item.equDet.forEach((equipment, index) => {
 | 
			
		||||
 
 | 
			
		||||
@@ -6,171 +6,157 @@
 | 
			
		||||
 * @Description: 产线生产实时数据
 | 
			
		||||
-->
 | 
			
		||||
<template>
 | 
			
		||||
  <div>
 | 
			
		||||
    <div class="app-container">
 | 
			
		||||
      <small-title :size="'md'">{{ $t('module.factory.realtime.productLine.name') }}</small-title>
 | 
			
		||||
      <base-table
 | 
			
		||||
        v-if="tableReady"
 | 
			
		||||
        :table-config="tableProps"
 | 
			
		||||
        :table-data="tableData.length ? tableData : []"
 | 
			
		||||
        :is-loading="listLoading"
 | 
			
		||||
        :index-config="{ align: 'left', fixed: 'left' }"
 | 
			
		||||
      />
 | 
			
		||||
    </div>
 | 
			
		||||
  </div>
 | 
			
		||||
	<div>
 | 
			
		||||
		<div class="app-container">
 | 
			
		||||
			<small-title :size="'md'">产线生产实时数据</small-title>
 | 
			
		||||
			<base-table v-if="loadTable" :table-head-configs="tableProps" :data="tableData.length ? tableData : []" />
 | 
			
		||||
		</div>
 | 
			
		||||
	</div>
 | 
			
		||||
</template>
 | 
			
		||||
 | 
			
		||||
<script>
 | 
			
		||||
// import BaseTable from '@/components/BaseTable/index-compound'
 | 
			
		||||
import BaseTable from '@/components/base-table'
 | 
			
		||||
import SmallTitle from '@/components/small-title'
 | 
			
		||||
import moment from 'moment'
 | 
			
		||||
// import fetchList from '@/api/factory-manage/realtimeData'
 | 
			
		||||
 | 
			
		||||
export default {
 | 
			
		||||
  name: 'RealtimeDataOfLine',
 | 
			
		||||
  components: { BaseTable, SmallTitle },
 | 
			
		||||
  data() {
 | 
			
		||||
    return {
 | 
			
		||||
      tableReady: false,
 | 
			
		||||
      dynamicPropSet: false,
 | 
			
		||||
      tableProps: [{ label: 'default', prop: 'default' }],
 | 
			
		||||
      tableData: [],
 | 
			
		||||
      testData: null,
 | 
			
		||||
      listLoading: false,
 | 
			
		||||
      intervalId: null
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
	name: 'RealtimeDataOfLine',
 | 
			
		||||
	components: { BaseTable, SmallTitle },
 | 
			
		||||
	data() {
 | 
			
		||||
		return {
 | 
			
		||||
			loadTable: false,
 | 
			
		||||
			dynamicPropSet: false,
 | 
			
		||||
			tableProps: [{ label: 'default', prop: 'default' }],
 | 
			
		||||
			tableData: [],
 | 
			
		||||
			testData: null,
 | 
			
		||||
			listLoading: false,
 | 
			
		||||
			intervalId: null
 | 
			
		||||
		}
 | 
			
		||||
	},
 | 
			
		||||
 | 
			
		||||
  mounted() {
 | 
			
		||||
    this.clearData()
 | 
			
		||||
    fetchList('line').then(res => {
 | 
			
		||||
      this.testData = res
 | 
			
		||||
      this.handleData()
 | 
			
		||||
    })
 | 
			
		||||
	mounted() {
 | 
			
		||||
		this.clearData()
 | 
			
		||||
		this.fetchList().then(({ data: res }) => {
 | 
			
		||||
			// console.log('fetchlist:', res)
 | 
			
		||||
			this.testData = res
 | 
			
		||||
			this.handleData()
 | 
			
		||||
		})
 | 
			
		||||
 | 
			
		||||
    this.intervalId = setInterval(() => {
 | 
			
		||||
      this.$message({
 | 
			
		||||
        message: this.$t('module.factory.realtime.productLine.refresh'),
 | 
			
		||||
        type: 'warning',
 | 
			
		||||
        onClose: () => {
 | 
			
		||||
          this.clearData()
 | 
			
		||||
          fetchList('line').then(res => {
 | 
			
		||||
            this.testData = res
 | 
			
		||||
            this.handleData()
 | 
			
		||||
          })
 | 
			
		||||
        }
 | 
			
		||||
      })
 | 
			
		||||
    }, 1000 * 60 * 5)
 | 
			
		||||
  },
 | 
			
		||||
		this.intervalId = setInterval(() => {
 | 
			
		||||
			this.$message({
 | 
			
		||||
				message: this.$t('module.factory.realtime.productLine.refresh'),
 | 
			
		||||
				type: 'warning',
 | 
			
		||||
				onClose: () => {
 | 
			
		||||
					this.clearData()
 | 
			
		||||
					this.fetchList().then(res => {
 | 
			
		||||
						this.testData = res
 | 
			
		||||
						this.handleData()
 | 
			
		||||
					})
 | 
			
		||||
				}
 | 
			
		||||
			})
 | 
			
		||||
		}, 1000 * 60 * 5)
 | 
			
		||||
	},
 | 
			
		||||
 | 
			
		||||
  beforeDestroy() {
 | 
			
		||||
    if (this.intervalId) clearInterval(this.intervalId)
 | 
			
		||||
  },
 | 
			
		||||
	beforeDestroy() {
 | 
			
		||||
		if (this.intervalId) clearInterval(this.intervalId)
 | 
			
		||||
	},
 | 
			
		||||
 | 
			
		||||
  methods: {
 | 
			
		||||
    clearData() {
 | 
			
		||||
      this.dynamicPropSet = false
 | 
			
		||||
      this.tableReady = false
 | 
			
		||||
      this.testData = null
 | 
			
		||||
      this.tableData.splice(0)
 | 
			
		||||
      this.tableProps.splice(0)
 | 
			
		||||
      this.setStaticTableProps()
 | 
			
		||||
    },
 | 
			
		||||
	methods: {
 | 
			
		||||
		fetchList() {
 | 
			
		||||
			return this.$http({
 | 
			
		||||
				url: this.$http.adornUrl('/monitoring/productionMonitoring/lineProductionRealTimeData'),
 | 
			
		||||
				method: 'post'
 | 
			
		||||
			})
 | 
			
		||||
		},
 | 
			
		||||
 | 
			
		||||
    handleData() {
 | 
			
		||||
      this.expandDataStepOne()
 | 
			
		||||
      // this.expandDataStepTwo()
 | 
			
		||||
      if (this.tableData.length > 0) this.tableReady = true
 | 
			
		||||
      else {
 | 
			
		||||
        this.$message({
 | 
			
		||||
          message: '没有查询到相关数据!',
 | 
			
		||||
          type: 'error',
 | 
			
		||||
          duration: 2000
 | 
			
		||||
        })
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
		clearData() {
 | 
			
		||||
			this.dynamicPropSet = false
 | 
			
		||||
			this.loadTable = false
 | 
			
		||||
			this.testData = null
 | 
			
		||||
			this.tableData.splice(0)
 | 
			
		||||
			this.tableProps.splice(0)
 | 
			
		||||
			this.setStaticTableProps()
 | 
			
		||||
		},
 | 
			
		||||
 | 
			
		||||
    expandDataStepOne() {
 | 
			
		||||
      // 扩展服务器返回的数据第一阶段
 | 
			
		||||
      console.log('create new one')
 | 
			
		||||
      this.tableData = this.testData.data.map(item => {
 | 
			
		||||
        const newItem = {
 | 
			
		||||
          lineName: item.lineName,
 | 
			
		||||
          orderName: item.orderName,
 | 
			
		||||
          productSize: item.productSize ?? '-'
 | 
			
		||||
        }
 | 
			
		||||
		handleData() {
 | 
			
		||||
			this.expandDataStepOne()
 | 
			
		||||
			// this.expandDataStepTwo()
 | 
			
		||||
			if (this.tableData.length > 0) this.loadTable = true
 | 
			
		||||
			else {
 | 
			
		||||
				this.$message({
 | 
			
		||||
					message: '没有查询到相关数据!',
 | 
			
		||||
					type: 'error',
 | 
			
		||||
					duration: 2000
 | 
			
		||||
				})
 | 
			
		||||
			}
 | 
			
		||||
		},
 | 
			
		||||
 | 
			
		||||
        if (item.det) {
 | 
			
		||||
          item.det.forEach(obj => {
 | 
			
		||||
            // Step2: 设置动态props
 | 
			
		||||
            if (!this.dynamicPropSet) {
 | 
			
		||||
              this.tableProps.push({
 | 
			
		||||
                label: moment(obj.recordTime).format('YYYY-MM-DD HH:mm:ss'),
 | 
			
		||||
                children: [
 | 
			
		||||
                  { prop: obj.recordTime + '-inputNum', label: this.$t('module.factory.realtime.productLine.input') },
 | 
			
		||||
                  { prop: obj.recordTime + '-outputNum', label: this.$t('module.factory.realtime.productLine.output') },
 | 
			
		||||
                  {
 | 
			
		||||
                    prop: obj.recordTime + '-passArea',
 | 
			
		||||
                    label: this.$t('module.factory.realtime.productLine.passArea')
 | 
			
		||||
                  },
 | 
			
		||||
                  {
 | 
			
		||||
                    prop: obj.recordTime + '-scrapNum',
 | 
			
		||||
                    label: this.$t('module.factory.realtime.productLine.scrapNum')
 | 
			
		||||
                  },
 | 
			
		||||
                  {
 | 
			
		||||
                    prop: obj.recordTime + '-scrapRate',
 | 
			
		||||
                    label: this.$t('module.factory.realtime.productLine.scrapRate')
 | 
			
		||||
                  }
 | 
			
		||||
                ]
 | 
			
		||||
              })
 | 
			
		||||
            }
 | 
			
		||||
		expandDataStepOne() {
 | 
			
		||||
			// 扩展服务器返回的数据第一阶段
 | 
			
		||||
			// console.log('create new one')
 | 
			
		||||
			this.tableData = this.testData.data.map(item => {
 | 
			
		||||
				const newItem = {
 | 
			
		||||
					lineName: item.lineName,
 | 
			
		||||
					orderName: item.orderName,
 | 
			
		||||
					productSize: item.productSize ?? '-'
 | 
			
		||||
				}
 | 
			
		||||
 | 
			
		||||
            Object.defineProperty(newItem, obj.recordTime + '-inputNum', {
 | 
			
		||||
              value: obj.inputNum ?? '-',
 | 
			
		||||
              enumerable: true,
 | 
			
		||||
              writable: true
 | 
			
		||||
            })
 | 
			
		||||
            Object.defineProperty(newItem, obj.recordTime + '-outputNum', {
 | 
			
		||||
              value: obj.outputNum ?? '-',
 | 
			
		||||
              enumerable: true,
 | 
			
		||||
              writable: true
 | 
			
		||||
            })
 | 
			
		||||
            Object.defineProperty(newItem, obj.recordTime + '-scrapNum', {
 | 
			
		||||
              value: obj.scrapNum ?? '-',
 | 
			
		||||
              enumerable: true,
 | 
			
		||||
              writable: true
 | 
			
		||||
            })
 | 
			
		||||
				if (item.det) {
 | 
			
		||||
					item.det.forEach(obj => {
 | 
			
		||||
						// Step2: 设置动态props
 | 
			
		||||
						if (!this.dynamicPropSet) {
 | 
			
		||||
							this.tableProps.push({
 | 
			
		||||
								label: moment(obj.recordTime).format('YYYY-MM-DD HH:mm:ss'),
 | 
			
		||||
								children: [
 | 
			
		||||
									{ prop: obj.recordTime + '-inputNum', label: '进数据' },
 | 
			
		||||
									{ prop: obj.recordTime + '-outputNum', label: '出数据' },
 | 
			
		||||
									{ prop: obj.recordTime + '-passArea', label: '良品率' },
 | 
			
		||||
									{ prop: obj.recordTime + '-scrapNum', label: '报废数量' },
 | 
			
		||||
									{ prop: obj.recordTime + '-scrapRate', label: '报废比例' }
 | 
			
		||||
								]
 | 
			
		||||
							})
 | 
			
		||||
						}
 | 
			
		||||
 | 
			
		||||
            const scrapRate = obj.scrapRate ?? '-'
 | 
			
		||||
            Object.defineProperty(newItem, obj.recordTime + '-scrapRate', {
 | 
			
		||||
              value: scrapRate === '-' ? '-' : scrapRate * 100 + '%',
 | 
			
		||||
              enumerable: true,
 | 
			
		||||
              writable: true
 | 
			
		||||
            })
 | 
			
		||||
            Object.defineProperty(newItem, obj.recordTime + '-passArea', {
 | 
			
		||||
              value: obj.passArea ?? '-',
 | 
			
		||||
              enumerable: true,
 | 
			
		||||
              writable: true
 | 
			
		||||
            })
 | 
			
		||||
          })
 | 
			
		||||
						Object.defineProperty(newItem, obj.recordTime + '-inputNum', {
 | 
			
		||||
							value: obj.inputNum ?? '-',
 | 
			
		||||
							enumerable: true,
 | 
			
		||||
							writable: true
 | 
			
		||||
						})
 | 
			
		||||
						Object.defineProperty(newItem, obj.recordTime + '-outputNum', {
 | 
			
		||||
							value: obj.outputNum ?? '-',
 | 
			
		||||
							enumerable: true,
 | 
			
		||||
							writable: true
 | 
			
		||||
						})
 | 
			
		||||
						Object.defineProperty(newItem, obj.recordTime + '-scrapNum', {
 | 
			
		||||
							value: obj.scrapNum ?? '-',
 | 
			
		||||
							enumerable: true,
 | 
			
		||||
							writable: true
 | 
			
		||||
						})
 | 
			
		||||
 | 
			
		||||
          this.dynamicPropSet = true
 | 
			
		||||
          return newItem
 | 
			
		||||
        } else {
 | 
			
		||||
          // console.log('没有item.det属性')
 | 
			
		||||
        }
 | 
			
		||||
      })
 | 
			
		||||
    },
 | 
			
		||||
						const scrapRate = obj.scrapRate ?? '-'
 | 
			
		||||
						Object.defineProperty(newItem, obj.recordTime + '-scrapRate', {
 | 
			
		||||
							value: scrapRate === '-' ? '-' : scrapRate * 100 + '%',
 | 
			
		||||
							enumerable: true,
 | 
			
		||||
							writable: true
 | 
			
		||||
						})
 | 
			
		||||
						Object.defineProperty(newItem, obj.recordTime + '-passArea', {
 | 
			
		||||
							value: obj.passArea ?? '-',
 | 
			
		||||
							enumerable: true,
 | 
			
		||||
							writable: true
 | 
			
		||||
						})
 | 
			
		||||
					})
 | 
			
		||||
 | 
			
		||||
    setStaticTableProps() {
 | 
			
		||||
      // Step1: 设置静态的 table props
 | 
			
		||||
      const staticTableProps = [
 | 
			
		||||
        { prop: 'lineName', label: this.$t('module.factory.realtime.productLine.pl'), fixed: true },
 | 
			
		||||
        { prop: 'orderName', label: this.$t('module.factory.realtime.productLine.currOrder'), fixed: true },
 | 
			
		||||
        { prop: 'productSize', label: this.$t('module.factory.realtime.productLine.pSpecs'), fixed: true }
 | 
			
		||||
      ]
 | 
			
		||||
      this.tableProps = staticTableProps
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
					this.dynamicPropSet = true
 | 
			
		||||
					return newItem
 | 
			
		||||
				}
 | 
			
		||||
			})
 | 
			
		||||
		},
 | 
			
		||||
 | 
			
		||||
		setStaticTableProps() {
 | 
			
		||||
			// Step1: 设置静态的 table props
 | 
			
		||||
			const staticTableProps = [{ prop: 'lineName', label: '产线', fixed: true }]
 | 
			
		||||
			this.tableProps = staticTableProps
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
</script>
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user