gaoshp
2024-11-03 dcc4992bd51e9ee4a97099cd3a15085f7e247f23
src/views/mdc/components/Time.vue
@@ -1,22 +1,21 @@
<!--
 * @Date: 2024-04-18 21:52:18
 * @LastEditors: Sneed
 * @LastEditTime: 2024-06-17 22:02:38
 * @LastEditTime: 2024-06-21 00:15:44
 * @FilePath: /belleson-frontend/Users/mache/Documents/demo/cps-web/src/views/mdc/components/Time.vue
-->
<template>
    <el-row>
        <el-col>
            <el-button-group>
                <el-button size="small" @click="statisticalMethod = item.value"
                    :type="statisticalMethod == item.value ? 'primary' : ''" v-for="item in btnList"
                    :key="item.value">{{
                <el-button size="small" @click="change(item)" :type="statisticalMethod == item.value ? 'primary' : ''"
                    v-for="item in btnList" :key="item.value">{{
                        item.label }}</el-button>
            </el-button-group>
        </el-col>
        <el-col style="margin-top: 12px;">
            <el-card shadow="never">
                <scEcharts height="300px" :option="option2"></scEcharts>
                <scEcharts height="300px" :option="option2" v-if="option2.title" />
            </el-card>
        </el-col>
        <el-col>
@@ -39,10 +38,11 @@
<script>
import scEcharts from '@/components/scEcharts';
import moment from 'moment'
export default {
    props: {
        url: {
            default: '/api/blade-mdc/efficiency-analysis',
            default: '/api/mdc/efficiency-analysis',
            type: String,
        },
        options: {
@@ -89,20 +89,27 @@
            ],
            cols: [],
            chartsData: [],
            option2: null,
            option2: {},
            btnListNew: []
        }
    },
    watch: {
        statisticalMethod(val) {
            this.query({
                ...this.params,
            })
            this.queryChart({
                ...this.params,
            })
            // this.query({
            //     ...this.params,
            // })
            // this.queryChart({
            //     ...this.params,
            // })
        }
    },
    methods: {
        change(item) {
            this.statisticalMethod = item.value
            this.init({
                ...this.params
            })
        },
        init(params) {
            this.params = params
            this.getTime({
@@ -110,26 +117,61 @@
                startDate: params.startDate,
                statisticalMethod: this.statisticalMethod
            }).then(res => {
                this.query({
                if (!res?.length) return
                let startDate = Math.min(...res?.map(v => new Date(v.startDate).getTime()))
                let endDate = Math.max(...res?.map(v => new Date(v.endDate).getTime()))
                console.log('------')
                let data = {
                    ...params,
                    statisticalMethod: this.statisticalMethod
                }
                if (this.statisticalMethod !== 'Day') {
                    data = {
                        ...data,
                        startDate: moment(startDate).format('YYYY-MM-DD'),
                        endDate: moment(endDate).format('YYYY-MM-DD'),
                        statisticalMethod: this.statisticalMethod
                    }
                }
                console.log(startDate, endDate)
                this.query({
                    ...data
                })
                this.queryChart({
                    ...params,
                    statisticalMethod: this.statisticalMethod
                    ...data,
                    // statisticalMethod: this.statisticalMethod
                })
            })
        },
        getTime(data) {
            return Promise.resolve()
            // return this.$HTTP.post('/api/blade-mdc/efficiency-analysis/interval', {
            //     ...data
            // }).then(res => {
            //     if (res.code === 200) {
            //         this.btnList = res.data
            //     }
            // })
            //return Promise.resolve()
            return this.$HTTP.post('/api/mdc/efficiency-analysis/interval', {
                ...data
            }).then(res => {
                if (res.code === 200) {
                    this.btnListNew = res.data
                    if (data.statisticalMethod === 'MONTH') {
                        return res?.data?.map(v => {
                            return {
                                ...v,
                                startDate: moment(v.id).startOf('month').format('YYYY-MM-DD'),
                                endDate: moment(v.id).endOf('month').format('YYYY-MM-DD')
                            }
                        })
                    } else if (data.statisticalMethod === 'DAY') {
                        return res?.data?.map(v => {
                            return {
                                ...v,
                                startDate: v.id,
                                endDate: v.id
                            }
                        })
                    } else {
                        return res.data
                    }
                }
            })
        },
        queryChart(data) {
            let params = {
@@ -140,6 +182,7 @@
                queryType: 0,
                statisticalMethod: this.statisticalMethod
            }
            this.option2 = {}
            return this.$HTTP.post(this.url, dataSend, { params }).then(res => {
                this.chartsData = res.data.items.records
                let option2 = {
@@ -176,8 +219,8 @@
                    dataset: {
                        source: []
                    },
                    ...this.options,
                    series: [],
                    ...this.options
                }
                let source1 = ['product']
                let row = res.data.items.records[0]
@@ -200,8 +243,7 @@
                console.log(option2)
            })
        },
        query(params) {
            this.params = params
        query(res) {
            this.apiObj = {
                get: async (data) => {
                    let params = {
@@ -209,7 +251,7 @@
                        size: data.size
                    }
                    let dataSend = {
                        ...data,
                        ...res,
                        queryType: 1,
                        statisticalMethod: this.statisticalMethod
                    }