yangys
2025-11-20 fe25b9d9dc98187a0b885631bc39dfd5daa15163
src/views/mdc/processParam/index.vue
@@ -1,7 +1,7 @@
<!--
 * @Date: 2024-04-09 22:11:21
 * @LastEditors: gaoshp
 * @LastEditTime: 2024-11-10 19:41:20
 * @LastEditors: lzhe lzhe@example.com
 * @LastEditTime: 2024-12-18 15:20:37
 * @FilePath: /cps-web/src/views/mdc/processParam/index.vue
 实时看板
-->
@@ -165,7 +165,7 @@
                workstationName: ''
            }).then(res => {
                if (res.success) {
                    window.open(res.data.link)
                    this.$TOOL.downFile(res.data.link,res.data.originalName);
                } else {
                    this.$message.error(res.msg)
                }
@@ -178,7 +178,7 @@
            this.visible = true
        },
        init() {
            this.$HTTP.get('/api/mdc/process-parameter').then(res => {
            this.$HTTP.get('/api/smis/global_wcs/wcs-achievements').then(res => {
                if (res.code === 200) {
                    this.legend = res.data
                }
@@ -278,6 +278,7 @@
            })
        },
        setLineOptions(data, myname) {
            console.log('data0',data)
            if (!data) return
            // console.log(data, myname)
            let xAxis = data?.map(item => {
@@ -325,31 +326,38 @@
                    showPie: false
                })
            }
        },
        setDeviceStatusOptions(data, myname) {
            debugger
            //console.log('data1',data)
            //console.log('endtime1',this.timeRange.endTime)
            let total = Math.abs(moment(this.timeRange.startTime).diff(moment(this.timeRange.endTime)))
            let start = this.timeRange.startTime
            let len = data?.data?.length
            if (len > 0 && moment(data.data[len - 1].time).unix() < moment(this.timeRange.endTime).unix()) {
                let addItem = {
                    time: this.timeRange.endTime,
                    value: data.data[len - 1].value
                    value: myname === 'DeviceStatus' ? data.data[len - 1].name : data.data[len - 1].value,
                }
                data.data.push(addItem)
            }
            let series = data.data.map((item, i) => {
                let current = Math.abs(moment(start).diff(moment(item.time)))
                start = item.time
                let name = i === 0 ? '' : data.data[i - 1].value
                let name = i === 0 ? '' : myname === 'DeviceStatus' ? data.data[i - 1].name : data.data[i - 1].value
                // if (myname === 'ProcessProgram') {
                try {
                    name = item.value.slice(-50)
                    name = myname === 'DeviceStatus' ? item.name.slice(-50) : item.value.slice(-50)
                } catch (err) {
                    name = item.value
                    name = myname === 'DeviceStatus' ? item.name : item.value
                }
                // }
                // let color = !name ? 'transparent' : data.data[i - 1].color
                //name = name+'s'
                if(name == undefined){
                    name = "无数据"
                }
                return {
                    name,
                    type: 'bar',
@@ -365,11 +373,9 @@
                    //         return `${name}:开始时间${moment(data.data[i - 1].time).format('HH:mm')}-${moment(item.time).format('HH:mm')}`
                    //     }
                    // },
                    // itemStyle: {
                    //     // color, // 这一行固定的颜色值需要删除或注释
                    //     borderColor: '#FFF',
                    //     borderWidth: 1
                    // },
                    itemStyle: {
                        color: item.color, // 这一行固定的颜色值需要删除或注释
                    },
                    tooltip: {
                        show: true,
                        trigger: 'item',
@@ -427,37 +433,64 @@
            this.list[index] = Object.assign({
                ...this.list[index],
                dayCharts,
                pieCharts: this.getPieCharts(data.data),
                pieCharts: this.getPieCharts(data.data, myname),
                showPie: false
            })
            // console.log(this.list, '>>>>>>>>>>>>>>>>>>>>>>111')
        },
        getPieCharts(data) {
        getPieCharts(data, myname) {
            let start = this.timeRange.startTime
            const obj = {
            }
            let key = myname === 'DeviceStatus' ? 'name' : 'value'
            data.forEach(v => {
                if (obj[v.value]) {
                    obj[v.value] += moment(v.time).valueOf() - moment(start).valueOf()
                } else {
                    obj[v.value] = moment(v.time).valueOf() - moment(start).valueOf()
                if(v[key] != undefined){
                    if (obj[v[key]]) {
                        obj[v[key]] += moment(v.time).valueOf() - moment(start).valueOf()
                    } else {
                        obj[v[key]] = moment(v.time).valueOf() - moment(start).valueOf()
                    }
                    start = v.time
                }
                start = v.time
            })
            let result = Object.keys(obj).map(key => {
                return {
                    value: obj[key] / 1000,
                    name: key,
                    name: key,//运行/报警/待机
                    // itemStyle: {
                    //     color: item.color, // 这一行固定的颜色值需要删除或注释
                    // },
                }
            }).map(v => {
                if (myname === 'DeviceStatus') {
                    if(v.name != 'undefined') {
                        //#D3D3D3 灰色
                        //let itemFound = this.legend.find(item => item.name === v.name)
                        return {
                            ...v,
                            itemStyle: {
                                color: this.legend.find(item => item.name === v.name).color
                                //color: itemFound?itemFound.color:'#D3D3D3'
                            }
                        }
                    }
                }
                return v
            })
            let charts = {
                tooltip: {
                    trigger: 'item',
                    formatter: function (params) {
                        console.log(params, '>>>>>.')
                        let d = moment.duration(params.value, 'seconds')
                        return `${params.name}: ${d.hours()}小时${d.minutes()}分${d.seconds()}秒`
                        let nameVal = params.name
                        if(params.name == undefined){
                            nameVal = '无数据'
                        }
                        //return `${params.name}: ${d.hours()}小时${d.minutes()}分${d.seconds()}秒`
                        return `${nameVal}: ${d.hours()}小时${d.minutes()}分${d.seconds()}秒`
                    }
                },
                legend: {
@@ -469,11 +502,10 @@
                        name: '',
                        type: 'pie',
                        radius: '50%',
                        data: result
                        data: result,
                    }
                ],
            }
            console.log(obj, 'pie')
            return charts
        },
        change(e) {