From 3931e2728f618d0090f129b2665bc1285c4440c3 Mon Sep 17 00:00:00 2001 From: gaoshp <291585735@qq.com> Date: 星期日, 03 十一月 2024 17:27:32 +0800 Subject: [PATCH] update --- src/views/mdc/components/Time.vue | 139 ++++++++++++++++++++++++++++++++++------------ 1 files changed, 103 insertions(+), 36 deletions(-) diff --git a/src/views/mdc/components/Time.vue b/src/views/mdc/components/Time.vue index b552b66..63ad963 100644 --- a/src/views/mdc/components/Time.vue +++ b/src/views/mdc/components/Time.vue @@ -1,22 +1,21 @@ <!-- * @Date: 2024-04-18 21:52:18 * @LastEditors: Sneed - * @LastEditTime: 2024-06-17 22:37:51 + * @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: { @@ -90,19 +90,26 @@ cols: [], chartsData: [], 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,19 +182,46 @@ queryType: 0, statisticalMethod: this.statisticalMethod } - // console.log(this.option2.series, '>>>>>>>>>>???') - try { - this.option2.dataset.source = [] - this.option2.series = [] - } catch (error) { - - } + this.option2 = {} return this.$HTTP.post(this.url, dataSend, { params }).then(res => { this.chartsData = res.data.items.records let option2 = { - ...this.options + // legend: { + // type: 'plain', + // }, + title: { + text: '缁熻鍥捐〃', + subtext: '', + }, + grid: { + top: '80px' + }, + tooltip: { + trigger: 'axis' + }, + xAxis: { + type: 'category', + axisLabel: { + interval: 'auto', + } + }, + yAxis: { + type: 'value', + axisLabel: { + formatter: (value) => { + return value + '%' + } + }, + }, + dataZoom: [ + { type: 'slider' } + ], + dataset: { + source: [] + }, + ...this.options, + series: [], } - option2.series = [] let source1 = ['product'] let row = res.data.items.records[0] Object.values(row.nameData).forEach(v => { @@ -161,7 +230,6 @@ }) source1.push(v) }) - option2.dataset.source = [source1] res.data.items.records.forEach(v => { let current = [v.id] @@ -175,8 +243,7 @@ console.log(option2) }) }, - query(params) { - this.params = params + query(res) { this.apiObj = { get: async (data) => { let params = { @@ -184,7 +251,7 @@ size: data.size } let dataSend = { - ...data, + ...res, queryType: 1, statisticalMethod: this.statisticalMethod } -- Gitblit v1.9.3