This commit is contained in:
‘937886381’
2026-01-06 17:09:52 +08:00
parent 5605eeab06
commit 51e66cf6e1
145 changed files with 265 additions and 226 deletions

View File

@@ -6,7 +6,7 @@
<div class="content-wrapper">
<div class="left">
<div class="number">{{ item.targetValue }}</div>
<div class="title">目标</div>
<div class="title">预算</div>
</div>
<div class="line"></div>
<div class="right">

View File

@@ -3,7 +3,7 @@
<div class="barTop">
<div class="title">销售指标趋势</div>
<div class="legend">
<span class="legend-item target">目标</span>
<span class="legend-item target">预算</span>
<span class="legend-item real">实际</span>
</div>
<div class="button-group">
@@ -97,7 +97,7 @@ export default {
return [
{
name: '目标',
name: '预算',
type: 'line',
stack: 'Total',
symbol: 'circle',

View File

@@ -4,7 +4,7 @@
<div class="barTop-left" style="display: flex;">
<div class="title">财务指标趋势</div>
<div class="legend">
<span class="legend-item target">目标</span>
<span class="legend-item target">预算</span>
<span class="legend-item real">实际</span>
</div>
</div>
@@ -85,7 +85,7 @@ export default {
return [
{
name: '目标',
name: '预算',
type: 'line',
symbol: 'circle',
symbolSize: 6,

View File

@@ -8,7 +8,7 @@
<div class="content-wrapper">
<div class="left">
<div class="number">{{ item.targetValue || 0 }}</div>
<div class="title">目标</div>
<div class="title">预算</div>
</div>
<div class="line"></div>
<div class="right">

View File

@@ -102,7 +102,7 @@ export default {
},
// 2. 目标(柱状图)
{
name: '目标',
name: '预算',
type: 'bar',
yAxisIndex: 0, // 左侧Y轴万元
barWidth: 14,
@@ -185,7 +185,7 @@ export default {
},
// 2. 目标(柱状图)
{
name: '目标',
name: '预算',
type: 'bar',
yAxisIndex: 0,
barWidth: 14,

View File

@@ -7,7 +7,7 @@
<div class="content-wrapper">
<div class="left">
<div class="number">{{ itemList[0].targetValue }}</div>
<div class="title">目标</div>
<div class="title">预算</div>
</div>
<div class="line"></div>
<div class="right">
@@ -43,12 +43,12 @@
<!-- 循环渲染剩余的item从索引1开始 -->
<div class="item groupData" style="display: flex;padding: 0;" v-for="(item, index) in itemList.slice(1)"
:key="index">
<!-- 左侧目标/实际值部分不变 -->
<!-- 左侧预算/实际值部分不变 -->
<div class="left" style="display: flex;align-items: start;gap: 4px;padding: 12px 0 0 12px;">
<div class="groupName">{{ item.unit }}</div>
<div class="left-target">
<div class="number">{{ item.targetValue }}</div>
<div class="title">目标</div>
<div class="title">预算</div>
</div>
<div class="left-real">
<div class="number" :style="{ color: getColor(item.currentValue, item.targetValue) }">
@@ -233,7 +233,7 @@ export default {
}
]
},
// 颜色判断核心方法:实际值≥目标值返回绿色,否则返回橙色
// 颜色判断核心方法:实际值≥预算值返回绿色,否则返回橙色
getColor(currentValue, targetValue) {
return currentValue >= targetValue
? "rgba(98, 213, 180, 1)"
@@ -344,7 +344,7 @@ export default {
background-image: url("../../../assets/img/order-item-bg.png");
}
// 实际值 >= 目标值:绿色背景图
// 实际值 >= 预算值:绿色背景图
.bg-green {
background-image: url("../../../assets/img/order-item-greenbg.png");
}

View File

@@ -75,7 +75,7 @@ export default {
value: 0,
proportion: 0,
route: 'profitAnalysis',
completed: 1 // 未达目标值,不达标
completed: 1 // 未达预算值,不达标
},
{
name: "年度",
@@ -83,7 +83,7 @@ export default {
value: 0,
proportion: 0,
route: 'profitAnalysis',
completed: 1 // 超出目标值,达标
completed: 1 // 超出预算值,达标
}
]
}

View File

@@ -3,7 +3,7 @@
<div class="legend">
<span class="legend-item-line">
<span class="line target"></span>
目标
预算
</span>
<span class="legend-item-line">
<span class="line real"></span>
@@ -187,7 +187,7 @@ export default {
data: realData // 使用提取出的 "实际" 数据
},
{
name: '目标',
name: '预算',
type: 'line',
// stack: 'Total',
symbol: 'circle',

View File

@@ -8,7 +8,7 @@
<div class="content-wrapper">
<div class="left">
<div class="number">{{ item.targetValue || 0 }}</div>
<div class="title">目标</div>
<div class="title">预算</div>
</div>
<div class="line"></div>
<div class="right">

View File

@@ -9,7 +9,7 @@
<div class="content-wrapper">
<div class="left">
<div class="number">{{ item.targetValue ||0 }}</div>
<div class="title">目标</div>
<div class="title">预算</div>
</div>
<div class="line"></div>
<div class="right">

View File

@@ -113,7 +113,7 @@ export default {
symbolSize: 6
},
{
name: '目标',
name: '预算',
type: 'bar',
yAxisIndex: 0,
barWidth: 18,

View File

@@ -78,7 +78,7 @@ export default {
return PlaceNames.map(place => {
const targetItem = dataSource.find(item => item.name === place);
return {
targetValue: targetItem?.[`${field}Target`] || 0, // 对应指标的目标值字段(如 profitTarget
targetValue: targetItem?.[`${field}Target`] || 0, // 对应指标的预算值字段(如 profitTarget
value: targetItem?.[field] || 0, // 对应指标的实际值
proportion: (targetItem?.[`${field}Proportion`] || 0), // 对应指标的占比(转百分比)
completed: targetItem?.[`${field}Completed`] ?? 0 // 状态字段(复用分公司的 completed

View File

@@ -8,7 +8,7 @@
<div class="content-wrapper">
<div class="left">
<div class="number">{{ item.targetValue || 0 }}</div>
<div class="title">目标</div>
<div class="title">预算</div>
</div>
<div class="line"></div>
<div class="right">

View File

@@ -7,7 +7,7 @@
<div class="content-wrapper">
<div class="left">
<div class="number">{{ item.target }}</div>
<div class="title">目标</div>
<div class="title">预算</div>
</div>
<div class="line"></div>
<div class="right">
@@ -132,7 +132,7 @@ export default {
getColor(index) {
const { actual, target, progress } = this.itemList[index];
// 新增条件:如果实际值、目标值和进度都为0则显示绿色
// 新增条件:如果实际值、预算值和进度都为0则显示绿色
if (actual === 0 && target === 0 && progress === 0) {
return "rgba(98, 213, 180, 1)"; // 绿色
}

View File

@@ -7,7 +7,7 @@
<div class="content-wrapper">
<div class="left">
<div class="number"> {{ item.targetValue || 0 }}</div>
<div class="title">目标</div>
<div class="title">预算</div>
</div>
<div class="line"></div>
<!-- 实际值使用当前item的flag判断颜色 -->

View File

@@ -137,7 +137,7 @@ export default {
series: [
// 目标数据柱状图
{
name: '目标',
name: '预算',
type: 'bar',
yAxisIndex: 0,
barWidth: 24,

View File

@@ -183,7 +183,7 @@ export default {
symbolSize: 6
},
{
name: '目标',
name: '预算',
type: 'bar',
yAxisIndex: 0,
barWidth: 14,

View File

@@ -9,11 +9,11 @@
</div>
<div class="item-content">
<div class="content-wrapper">
<!-- 目标 + 分割线 + 实际值 -->
<!-- 预算 + 分割线 + 实际值 -->
<div class="value-group">
<div class="value-item">
<div class="number">{{ item.targetValue || 0 }}</div>
<div class="title">目标</div>
<div class="title">预算</div>
</div>
<div class="middle-line"></div>
<div class="value-item">

View File

@@ -9,11 +9,11 @@
</div>
<div class="item-content">
<div class="content-wrapper">
<!-- 目标 + 分割线 + 实际值 -->
<!-- 预算 + 分割线 + 实际值 -->
<div class="value-group">
<div class="value-item">
<div class="number">{{ item.value }}</div>
<!-- <div class="title">目标</div> -->
<!-- <div class="title">预算</div> -->
</div>
</div>
</div>

View File

@@ -130,7 +130,7 @@ export default {
// 更新 ECharts 数据(包含 flag 字段)
this.echartData = {
locations, // x轴地名列表
target, // 目标值数组
target, // 预算值数组
value, // 实际值数组
proportion,
flag

View File

@@ -9,11 +9,11 @@
</div>
<div class="item-content">
<div class="content-wrapper">
<!-- 目标 + 分割线 + 实际值 -->
<!-- 预算 + 分割线 + 实际值 -->
<div class="value-group">
<div class="value-item">
<div class="number">{{ item.targetValue }}</div>
<div class="title">目标</div>
<div class="title">预算</div>
</div>
<div class="middle-line"></div>
<div class="value-item">

View File

@@ -11,7 +11,7 @@
<div class="value-group">
<div class="value-item">
<div class="number" style="color: rgba(103, 103, 103, 0.79);">{{ item.target }}</div>
<div class="title">目标</div>
<div class="title">预算</div>
</div>
<div class="middle-line"></div>
<!-- 当前值数字根据 flag 变色 -->

View File

@@ -9,11 +9,11 @@
</div>
<div class="item-content">
<div class="content-wrapper">
<!-- 目标 + 分割线 + 实际值 -->
<!-- 预算 + 分割线 + 实际值 -->
<div class="value-group">
<div class="value-item">
<div class="number">{{ item.targetValue || 0 }}</div>
<div class="title">目标</div>
<div class="title">预算</div>
</div>
<div class="middle-line"></div>
<div class="value-item">

View File

@@ -8,7 +8,7 @@
<div class="content-wrapper">
<div class="left">
<div class="number">{{ item.targetValue }}</div>
<div class="title">目标</div>
<div class="title">预算</div>
</div>
<div class="line"></div>
<div class="right">

View File

@@ -7,12 +7,12 @@
<div class="content-wrapper">
<div class="left">
<div class="number">16</div>
<div class="title">目标</div>
<div class="title">预算</div>
</div>
<div class="line"></div>
<div class="right">
<div class="number">16</div>
<div class="title">目标</div>
<div class="title">预算</div>
</div>
</div>
<!-- 进度条和百分比容器横向排列 -->
@@ -34,12 +34,12 @@
<div class="content-wrapper">
<div class="left">
<div class="number">16</div>
<div class="title">目标</div>
<div class="title">预算</div>
</div>
<div class="line"></div>
<div class="right">
<div class="number">16</div>
<div class="title">目标</div>
<div class="title">预算</div>
</div>
</div>
<!-- 进度条和百分比容器横向排列 -->
@@ -61,12 +61,12 @@
<div class="content-wrapper">
<div class="left">
<div class="number">16</div>
<div class="title">目标</div>
<div class="title">预算</div>
</div>
<div class="line"></div>
<div class="right">
<div class="number">16</div>
<div class="title">目标</div>
<div class="title">预算</div>
</div>
</div>
<!-- 进度条和百分比容器横向排列 -->
@@ -88,12 +88,12 @@
<div class="content-wrapper">
<div class="left">
<div class="number">16</div>
<div class="title">目标</div>
<div class="title">预算</div>
</div>
<div class="line"></div>
<div class="right">
<div class="number">16</div>
<div class="title">目标</div>
<div class="title">预算</div>
</div>
</div>
<!-- 进度条和百分比容器横向排列 -->
@@ -115,12 +115,12 @@
<div class="content-wrapper">
<div class="left">
<div class="number">16</div>
<div class="title">目标</div>
<div class="title">预算</div>
</div>
<div class="line"></div>
<div class="right">
<div class="number">16</div>
<div class="title">目标</div>
<div class="title">预算</div>
</div>
</div>
<!-- 进度条和百分比容器横向排列 -->

View File

@@ -95,10 +95,10 @@ export default {
case 2: // 实际值:低~高
dataWithIndex.sort((a, b) => a.real - b.real);
break;
case 3: // 目标值:高~低
case 3: // 预算值:高~低
dataWithIndex.sort((a, b) => b.rate - a.rate);
break;
case 4: // 目标值:低~高
case 4: // 预算值:低~高
dataWithIndex.sort((a, b) => a.rate - b.rate);
break;
default:

View File

@@ -100,7 +100,7 @@ export default {
this.groupData = this.monthData.group || { rate: 0, diff: 0, real: 0, target: 0 };
// 集团各维度数据数组(单条数据,对应凯盛新能)
const groupTarget = [this.groupData.target]; // 目标值数组
const groupTarget = [this.groupData.target]; // 预算值数组
const groupDiff = [this.groupData.diff]; // 差值数组
const groupReal = [this.groupData.real]; // 实际值数组
const groupRate = [this.groupData.rate]; // 完成率数组
@@ -133,7 +133,7 @@ export default {
// 集团数据(对应凯盛新能)
group: {
locations: ['凯盛新能'], // 集团名称
targets: groupTarget, // 集团目标值数组
targets: groupTarget, // 集团预算值数组
diff: groupDiff, // 集团差值数组
reals: groupReal, // 集团实际值数组
rate: groupRate, // 集团完成率数组

View File

@@ -95,7 +95,7 @@ export default {
this.groupData = this.ytdData.group || { rate: 0, diff: 0, real: 0, target: 0 };
// 集团各维度数据数组(单条数据,对应凯盛新能)
const groupTarget = [this.groupData.target]; // 目标值数组
const groupTarget = [this.groupData.target]; // 预算值数组
const groupDiff = [this.groupData.diff]; // 差值数组
const groupReal = [this.groupData.real]; // 实际值数组
const groupRate = [this.groupData.rate]; // 完成率数组
@@ -128,7 +128,7 @@ export default {
// 集团数据(对应凯盛新能)
group: {
locations: ['凯盛新能'], // 集团名称
targets: groupTarget, // 集团目标值数组
targets: groupTarget, // 集团预算值数组
diff: groupDiff, // 集团差值数组
reals: groupReal, // 集团实际值数组
rate: groupRate, // 集团完成率数组

View File

@@ -270,7 +270,7 @@ export default {
},
// 2. 目标(柱状图)
{
name: '目标',
name: '预算',
type: 'bar',
yAxisIndex: 0,
barWidth: 14,

View File

@@ -145,7 +145,7 @@ export default {
label: {
show: true,
position: 'right',
offset: [-60, 25],
offset: [0, 25],
// 固定label尺寸68px×20px
width: 68,
height: 20,

View File

@@ -1,6 +1,5 @@
<template>
<div id="dayReport" class="dayReport" :style="styles">
<div v-if="device === 'mobile' && sidebar.opened" class="drawer-bg" @click="handleClickOutside" />
<sidebar v-if="!sidebar.hide" class="sidebar-container" />
<ReportHeader :dateData="dateData" top-title="全成本分析" :is-full-screen="isFullScreen"
@screenfullChange="screenfullChange" @timeRangeChange="handleTimeChange" />

View File

@@ -76,7 +76,7 @@ export default {
months: [], // 月份数组x轴标签
rates: [], // 完成率completeRate
reals: [], // 实际值real
targets: [], // 目标target
targets: [], // 预算target
flags: [], // 达标状态
diffs:[]
};
@@ -155,7 +155,7 @@ export default {
},
// 2. 目标(柱状图)
{
name: '目标',
name: '预算',
type: 'bar',
yAxisIndex: 0,
barWidth: 14,
@@ -171,7 +171,7 @@ export default {
borderRadius: [4, 4, 0, 0],
borderWidth: 0
},
data: targets, // 动态目标
data: targets, // 动态预算
},
// 3. 实际(柱状图,含达标状态)
{

View File

@@ -95,10 +95,10 @@ export default {
case 2: // 实际值:低~高
dataWithIndex.sort((a, b) => a.real - b.real);
break;
case 3: // 目标值:高~低
case 3: // 预算值:高~低
dataWithIndex.sort((a, b) => b.rate - a.rate);
break;
case 4: // 目标值:低~高
case 4: // 预算值:低~高
dataWithIndex.sort((a, b) => a.rate - b.rate);
break;
default:

View File

@@ -153,7 +153,7 @@ export default {
yAxis: [
{
type: 'value',
name: '元',
name: '元/m2',
nameTextStyle: {
color: 'rgba(0, 0, 0, 0.45)',
fontSize: 12,

View File

@@ -111,7 +111,7 @@ export default {
// 左侧Y轴营业收入、成本单位万元
{
type: 'value',
name: '元',
name: '元/m2',
nameTextStyle: {
color: 'rgba(0, 0, 0, 0.45)',
fontSize: 12,

View File

@@ -116,7 +116,7 @@ export default {
// 3. 组装工厂chartData格式与集团一致适配子组件
this.chartData = {
locations: factoryKeys, // 工厂名称数组
targets: factoryDataList.map(item => item.target || 0), // 目标
targets: factoryDataList.map(item => item.target || 0), // 预算
diff: factoryDataList.map(item => item.diff || 0), // 差值
reals: factoryDataList.map(item => item.real || 0), // 实际值
rates: factoryDataList.map(item => item.completeRate || 0), // 完成率

View File

@@ -116,7 +116,7 @@ export default {
// 3. 组装工厂chartData格式与集团一致适配子组件
this.chartData = {
locations: factoryKeys, // 工厂名称数组
targets: factoryDataList.map(item => item.target || 0), // 目标
targets: factoryDataList.map(item => item.target || 0), // 预算
diff: factoryDataList.map(item => item.diff || 0), // 差值
reals: factoryDataList.map(item => item.real || 0), // 实际值
rates: factoryDataList.map(item => item.completeRate || 0), // 完成率

View File

@@ -270,7 +270,7 @@ export default {
},
// 2. 目标(柱状图)
{
name: '目标',
name: '预算',
type: 'bar',
yAxisIndex: 0,
barWidth: 14,

View File

@@ -107,7 +107,7 @@ export default {
label: {
show: true,
position: 'right',
offset: [-60, 25],
offset: [0, 25],
width: 68,
height: 20,
formatter: `{rate|${diffValue}}{text|差值}`,

View File

@@ -262,7 +262,7 @@ export default {
},
// 2. 目标(柱状图)
{
name: '目标',
name: '预算',
type: 'bar',
yAxisIndex: 0,
barWidth: 14,

View File

@@ -95,10 +95,10 @@ export default {
case 2: // 实际值:低~高
dataWithIndex.sort((a, b) => a.real - b.real);
break;
case 3: // 目标值:高~低
case 3: // 预算值:高~低
dataWithIndex.sort((a, b) => b.rate - a.rate);
break;
case 4: // 目标值:低~高
case 4: // 预算值:低~高
dataWithIndex.sort((a, b) => a.rate - b.rate);
break;
default:

View File

@@ -153,7 +153,7 @@ export default {
yAxis: [
{
type: 'value',
name: '万元',
name: '%',
nameTextStyle: {
color: 'rgba(0, 0, 0, 0.45)',
fontSize: 12,

View File

@@ -111,7 +111,7 @@ export default {
// 左侧Y轴营业收入、成本单位万元
{
type: 'value',
name: '万元',
name: '%',
nameTextStyle: {
color: 'rgba(0, 0, 0, 0.45)',
fontSize: 12,

View File

@@ -102,7 +102,7 @@ export default {
this.groupData = this.monthData.group || { rate: 0, diff: 0, real: 0, target: 0 };
// 集团各维度数据数组(单条数据,对应凯盛新能)
const groupTarget = [this.groupData.target]; // 目标值数组
const groupTarget = [this.groupData.target]; // 预算值数组
const groupDiff = [this.groupData.diff]; // 差值数组
const groupReal = [this.groupData.real]; // 实际值数组
const groupRate = [this.groupData.rate]; // 完成率数组
@@ -135,7 +135,7 @@ export default {
// 集团数据(对应凯盛新能)
group: {
locations: ['凯盛新能'], // 集团名称
targets: groupTarget, // 集团目标值数组
targets: groupTarget, // 集团预算值数组
diff: groupDiff, // 集团差值数组
reals: groupReal, // 集团实际值数组
rate: groupRate, // 集团完成率数组

View File

@@ -97,7 +97,7 @@ export default {
this.groupData = this.ytdData.group || { rate: 0, diff: 0, real: 0, target: 0 };
// 集团各维度数据数组(单条数据,对应凯盛新能)
const groupTarget = [this.groupData.target]; // 目标值数组
const groupTarget = [this.groupData.target]; // 预算值数组
const groupDiff = [this.groupData.diff]; // 差值数组
const groupReal = [this.groupData.real]; // 实际值数组
const groupRate = [this.groupData.rate]; // 完成率数组
@@ -130,7 +130,7 @@ export default {
// 集团数据(对应凯盛新能)
group: {
locations: ['凯盛新能'], // 集团名称
targets: groupTarget, // 集团目标值数组
targets: groupTarget, // 集团预算值数组
diff: groupDiff, // 集团差值数组
reals: groupReal, // 集团实际值数组
rate: groupRate, // 集团完成率数组

View File

@@ -145,7 +145,7 @@ export default {
label: {
show: true,
position: 'right',
offset: [-60, 25],
offset: [0, 25],
// 固定label尺寸68px×20px
width: 68,
height: 20,

View File

@@ -1,5 +1,6 @@
<template>
<div id="dayReport" class="dayReport" :style="styles">
<!-- <sidebar v-if="!sidebar.hide" class="sidebar-container" /> -->
<ReportHeader top-title="洛玻集团运营驾驶舱" :is-full-screen="isFullScreen" @screenfullChange="screenfullChange"
@timeRangeChange="handleTimeChange" />
<div class="main-body"
@@ -11,7 +12,7 @@
grid-template-columns: 560px 745px 560px ;
">
<coreSalesKPIs :sale="sale" :dateData="dateData" />
<financeCosts :finance="finance" :dateData="dateData" :cost="cost" />
<financeCosts :finance="finance" :dateData="dateData" :cost="cost" />
<keyProductionIndicators :productData="productData" :dateData="dateData" />
</div>
</div>
@@ -40,9 +41,10 @@ import orderProgress from './components/orderProgress.vue'
import keyWork from './components/keyWork.vue'
// import moment from 'moment'
import { getOperateCockpit, getOrderDetail } from '@/api/cockpit'
import { Sidebar } from "../../layout/components";
export default {
name: 'DayReport',
components: { ReportHeader, coreSalesKPIs, keyProductionIndicators, coreBottomLeft, keyWork, orderProgress, financeCosts },
components: { ReportHeader, coreSalesKPIs, keyProductionIndicators, coreBottomLeft, keyWork, orderProgress, financeCosts, Sidebar },
data() {
return {
isFullScreen: false,
@@ -68,6 +70,25 @@ export default {
this.windowWidth(document.documentElement.clientWidth)
},
computed: {
// ...mapState({
// theme: (state) => state.settings.theme,
// sideTheme: (state) => state.settings.sideTheme,
// sidebar: (state) => state.app.sidebar,
// device: (state) => state.app.device,
// needTagsView: (state) => state.settings.tagsView,
// fixedHeader: (state) => state.settings.fixedHeader,
// }),
// classObj() {
// return {
// hideSidebar: !this.sidebar.opened,
// openSidebar: this.sidebar.opened,
// withoutAnimation: this.sidebar.withoutAnimation,
// mobile: this.device === "mobile",
// };
// },
// variables() {
// return variables;
// },
// ...mapGetters(['sidebar']),
styles() {
const v = Math.floor(this.value * this.beilv * 100) / 10000

View File

@@ -95,10 +95,10 @@ export default {
case 2: // 实际值:低~高
dataWithIndex.sort((a, b) => a.real - b.real);
break;
case 3: // 目标值:高~低
case 3: // 预算值:高~低
dataWithIndex.sort((a, b) => b.rate - a.rate);
break;
case 4: // 目标值:低~高
case 4: // 预算值:低~高
dataWithIndex.sort((a, b) => a.rate - b.rate);
break;
default:

View File

@@ -153,7 +153,7 @@ export default {
yAxis: [
{
type: 'value',
name: '万元',
name: '%',
nameTextStyle: {
color: 'rgba(0, 0, 0, 0.45)',
fontSize: 12,

View File

@@ -111,7 +111,7 @@ export default {
// 左侧Y轴营业收入、成本单位万元
{
type: 'value',
name: '万元',
name: '%',
nameTextStyle: {
color: 'rgba(0, 0, 0, 0.45)',
fontSize: 12,

View File

@@ -102,7 +102,7 @@ export default {
this.groupData = this.monthData.group || { rate: 0, diff: 0, real: 0, target: 0 };
// 集团各维度数据数组(单条数据,对应凯盛新能)
const groupTarget = [this.groupData.target]; // 目标值数组
const groupTarget = [this.groupData.target]; // 预算值数组
const groupDiff = [this.groupData.diff]; // 差值数组
const groupReal = [this.groupData.real]; // 实际值数组
const groupRate = [this.groupData.rate]; // 完成率数组
@@ -135,7 +135,7 @@ export default {
// 集团数据(对应凯盛新能)
group: {
locations: ['凯盛新能'], // 集团名称
targets: groupTarget, // 集团目标值数组
targets: groupTarget, // 集团预算值数组
diff: groupDiff, // 集团差值数组
reals: groupReal, // 集团实际值数组
rate: groupRate, // 集团完成率数组

View File

@@ -96,7 +96,7 @@ export default {
this.groupData = this.ytdData.group || { rate: 0, diff: 0, real: 0, target: 0 };
// 集团各维度数据数组(单条数据,对应凯盛新能)
const groupTarget = [this.groupData.target]; // 目标值数组
const groupTarget = [this.groupData.target]; // 预算值数组
const groupDiff = [this.groupData.diff]; // 差值数组
const groupReal = [this.groupData.real]; // 实际值数组
const groupRate = [this.groupData.rate]; // 完成率数组
@@ -129,7 +129,7 @@ export default {
// 集团数据(对应凯盛新能)
group: {
locations: ['凯盛新能'], // 集团名称
targets: groupTarget, // 集团目标值数组
targets: groupTarget, // 集团预算值数组
diff: groupDiff, // 集团差值数组
reals: groupReal, // 集团实际值数组
rate: groupRate, // 集团完成率数组

View File

@@ -270,7 +270,7 @@ export default {
},
// 2. 目标(柱状图)
{
name: '目标',
name: '预算',
type: 'bar',
yAxisIndex: 0,
barWidth: 14,

View File

@@ -145,7 +145,7 @@ export default {
label: {
show: true,
position: 'right',
offset: [-60, 25],
offset: [0, 25],
// 固定label尺寸68px×20px
width: 68,
height: 20,

View File

@@ -75,7 +75,7 @@ export default {
months: [], // 月份数组x轴标签
rates: [], // 完成率completeRate
reals: [], // 实际值real
targets: [], // 目标target
targets: [], // 预算target
flags: [], // 达标状态
diffs: [],
};
@@ -152,7 +152,7 @@ export default {
},
// 2. 目标(柱状图)
{
name: '目标',
name: '预算',
type: 'bar',
yAxisIndex: 0,
barWidth: 14,
@@ -168,7 +168,7 @@ export default {
borderRadius: [4, 4, 0, 0],
borderWidth: 0
},
data: targets, // 动态目标
data: targets, // 动态预算
},
// 3. 实际(柱状图,含达标状态)
{

View File

@@ -95,10 +95,10 @@ export default {
case 2: // 实际值:低~高
dataWithIndex.sort((a, b) => a.real - b.real);
break;
case 3: // 目标值:高~低
case 3: // 预算值:高~低
dataWithIndex.sort((a, b) => b.rate - a.rate);
break;
case 4: // 目标值:低~高
case 4: // 预算值:低~高
dataWithIndex.sort((a, b) => a.rate - b.rate);
break;
default:

View File

@@ -153,7 +153,7 @@ export default {
yAxis: [
{
type: 'value',
name: '元',
name: '元',
nameTextStyle: {
color: 'rgba(0, 0, 0, 0.45)',
fontSize: 12,

View File

@@ -111,7 +111,7 @@ export default {
// 左侧Y轴营业收入、成本单位万元
{
type: 'value',
name: '元',
name: '元',
nameTextStyle: {
color: 'rgba(0, 0, 0, 0.45)',
fontSize: 12,

View File

@@ -116,7 +116,7 @@ export default {
// 3. 组装工厂chartData格式与集团一致适配子组件
this.chartData = {
locations: factoryKeys, // 工厂名称数组
targets: factoryDataList.map(item => item.target || 0), // 目标
targets: factoryDataList.map(item => item.target || 0), // 预算
diff: factoryDataList.map(item => item.diff || 0), // 差值
reals: factoryDataList.map(item => item.real || 0), // 实际值
rates: factoryDataList.map(item => item.completeRate || 0), // 完成率

View File

@@ -116,7 +116,7 @@ export default {
// 3. 组装工厂chartData格式与集团一致适配子组件
this.chartData = {
locations: factoryKeys, // 工厂名称数组
targets: factoryDataList.map(item => item.target || 0), // 目标
targets: factoryDataList.map(item => item.target || 0), // 预算
diff: factoryDataList.map(item => item.diff || 0), // 差值
reals: factoryDataList.map(item => item.real || 0), // 实际值
rates: factoryDataList.map(item => item.completeRate || 0), // 完成率

View File

@@ -270,7 +270,7 @@ export default {
},
// 2. 目标(柱状图)
{
name: '目标',
name: '预算',
type: 'bar',
yAxisIndex: 0,
barWidth: 14,

View File

@@ -107,7 +107,7 @@ export default {
label: {
show: true,
position: 'right',
offset: [-60, 25],
offset: [0, 25],
width: 68,
height: 20,
formatter: `{rate|${diffValue}}{text|差值}`,

View File

@@ -95,10 +95,10 @@ export default {
case 2: // 实际值:低~高
dataWithIndex.sort((a, b) => a.real - b.real);
break;
case 3: // 目标值:高~低
case 3: // 预算值:高~低
dataWithIndex.sort((a, b) => b.rate - a.rate);
break;
case 4: // 目标值:低~高
case 4: // 预算值:低~高
dataWithIndex.sort((a, b) => a.rate - b.rate);
break;
default:

View File

@@ -102,7 +102,7 @@ export default {
this.groupData = this.monthData.group || { rate: 0, diff: 0, real: 0, target: 0 };
// 集团各维度数据数组(单条数据,对应凯盛新能)
const groupTarget = [this.groupData.target]; // 目标值数组
const groupTarget = [this.groupData.target]; // 预算值数组
const groupDiff = [this.groupData.diff]; // 差值数组
const groupReal = [this.groupData.real]; // 实际值数组
const groupRate = [this.groupData.rate]; // 完成率数组
@@ -135,7 +135,7 @@ export default {
// 集团数据(对应凯盛新能)
group: {
locations: ['凯盛新能'], // 集团名称
targets: groupTarget, // 集团目标值数组
targets: groupTarget, // 集团预算值数组
diff: groupDiff, // 集团差值数组
reals: groupReal, // 集团实际值数组
rate: groupRate, // 集团完成率数组

View File

@@ -98,7 +98,7 @@ export default {
this.groupData = this.ytdData.group || { rate: 0, diff: 0, real: 0, target: 0 };
// 集团各维度数据数组(单条数据,对应凯盛新能)
const groupTarget = [this.groupData.target]; // 目标值数组
const groupTarget = [this.groupData.target]; // 预算值数组
const groupDiff = [this.groupData.diff]; // 差值数组
const groupReal = [this.groupData.real]; // 实际值数组
const groupRate = [this.groupData.rate]; // 完成率数组
@@ -131,7 +131,7 @@ export default {
// 集团数据(对应凯盛新能)
group: {
locations: ['凯盛新能'], // 集团名称
targets: groupTarget, // 集团目标值数组
targets: groupTarget, // 集团预算值数组
diff: groupDiff, // 集团差值数组
reals: groupReal, // 集团实际值数组
rate: groupRate, // 集团完成率数组

View File

@@ -270,7 +270,7 @@ export default {
},
// 2. 目标(柱状图)
{
name: '目标',
name: '预算',
type: 'bar',
yAxisIndex: 0,
barWidth: 14,

View File

@@ -145,7 +145,7 @@ export default {
label: {
show: true,
position: 'right',
offset: [-60, 25],
offset: [0, 25],
// 固定label尺寸68px×20px
width: 68,
height: 20,

View File

@@ -45,7 +45,7 @@ export default {
const timeArr = []; // 格式化后的年月数组
const valueArr = []; // 实际值数组
const diffValueArr = []; // 差异值数组
const targetValueArr = []; // 目标值数组
const targetValueArr = []; // 预算值数组
const proportionArr = []; // 占比数组
const completedArr = []; // 完成率数组

View File

@@ -120,7 +120,7 @@ export default {
},
// 2. 目标(柱状图)
{
name: '目标',
name: '预算',
type: 'bar',
yAxisIndex: 0, // 左侧Y轴万元
barWidth: 14,

View File

@@ -95,10 +95,10 @@ export default {
case 2: // 实际值:低~高
dataWithIndex.sort((a, b) => a.real - b.real);
break;
case 3: // 目标值:高~低
case 3: // 预算值:高~低
dataWithIndex.sort((a, b) => b.rate - a.rate);
break;
case 4: // 目标值:低~高
case 4: // 预算值:低~高
dataWithIndex.sort((a, b) => a.rate - b.rate);
break;
default:

View File

@@ -71,7 +71,7 @@ export default {
topBarData: { // levelId=1的整合数据
locations: [], // 固定为["凯盛新能"]
diff: [], // 差值数组
targets: [], // 目标值数组
targets: [], // 预算值数组
reals: [], // 实际值数组
rate: [], // 完成率数组
flags: [] // 完成状态数组0/1
@@ -79,7 +79,7 @@ export default {
barData: { // levelId≠1的整合数据
locations: [], // levelId对应的baseIndexToNameMap中的地名
diff: [], // 对应差值数组
targets: [], // 目标值数组
targets: [], // 预算值数组
reals: [], // 实际值数组
rate: [], // 完成率数组
flags: [] // 完成状态数组0/1

View File

@@ -71,7 +71,7 @@ export default {
topBarData: { // levelId=1的整合数据
locations: [], // 固定为["凯盛新能"]
diff: [], // 差值数组
targets: [], // 目标值数组
targets: [], // 预算值数组
reals: [], // 实际值数组
rate: [], // 完成率数组
flags: [] // 完成状态数组0/1
@@ -79,7 +79,7 @@ export default {
barData: { // levelId≠1的整合数据
locations: [], // levelId对应的baseIndexToNameMap中的地名
diff: [], // 对应差值数组
targets: [], // 目标值数组
targets: [], // 预算值数组
reals: [], // 实际值数组
rate: [], // 完成率数组
flags: [] // 完成状态数组0/1

View File

@@ -270,7 +270,7 @@ export default {
},
// 2. 目标(柱状图)
{
name: '目标',
name: '预算',
type: 'bar',
yAxisIndex: 0,
barWidth: 14,

View File

@@ -108,7 +108,7 @@ export default {
label: {
show: true,
position: 'right',
offset: [-60, 25],
offset: [0, 25],
width: 68,
height: 20,
formatter: `{rate|${diffValue}}{text|差值}`,

View File

@@ -77,7 +77,7 @@ export default {
months: [], // 月份数组x轴标签
rates: [], // 完成率completeRate
reals: [], // 实际值real
targets: [], // 目标target
targets: [], // 预算target
flags: [], // 达标状态
diffs: [],
};
@@ -155,7 +155,7 @@ export default {
},
// 2. 目标(柱状图)
{
name: '目标',
name: '预算',
type: 'bar',
yAxisIndex: 0,
barWidth: 14,
@@ -171,7 +171,7 @@ export default {
borderRadius: [4, 4, 0, 0],
borderWidth: 0
},
data: targets, // 动态目标
data: targets, // 动态预算
},
// 3. 实际(柱状图,含达标状态)
{

View File

@@ -95,10 +95,10 @@ export default {
case 2: // 实际值:低~高
dataWithIndex.sort((a, b) => a.real - b.real);
break;
case 3: // 目标值:高~低
case 3: // 预算值:高~低
dataWithIndex.sort((a, b) => b.rate - a.rate);
break;
case 4: // 目标值:低~高
case 4: // 预算值:低~高
dataWithIndex.sort((a, b) => a.rate - b.rate);
break;
default:

View File

@@ -116,7 +116,7 @@ export default {
// 3. 组装工厂chartData格式与集团一致适配子组件
this.chartData = {
locations: factoryKeys, // 工厂名称数组
targets: factoryDataList.map(item => item.target || 0), // 目标
targets: factoryDataList.map(item => item.target || 0), // 预算
diff: factoryDataList.map(item => item.diff || 0), // 差值
reals: factoryDataList.map(item => item.real || 0), // 实际值
rates: factoryDataList.map(item => item.completeRate || 0), // 完成率

View File

@@ -116,7 +116,7 @@ export default {
// 3. 组装工厂chartData格式与集团一致适配子组件
this.chartData = {
locations: factoryKeys, // 工厂名称数组
targets: factoryDataList.map(item => item.target || 0), // 目标
targets: factoryDataList.map(item => item.target || 0), // 预算
diff: factoryDataList.map(item => item.diff || 0), // 差值
reals: factoryDataList.map(item => item.real || 0), // 实际值
rates: factoryDataList.map(item => item.completeRate || 0), // 完成率

View File

@@ -107,7 +107,7 @@ export default {
label: {
show: true,
position: 'right',
offset: [-60, 25],
offset: [0, 25],
width: 68,
height: 20,
formatter: `{rate|${diffValue}}{text|差值}`,

View File

@@ -16,7 +16,7 @@
gap: 12px;
grid-template-columns:1624px;
">
<operatingLineChart :dateData="dateData" :baseUrl="baseUrl" :monData="monData" />
<operatingLineChart :yName=" '元/㎡'" :dateData="dateData" :baseUrl="baseUrl" :monData="monData" />
</div>
</div>
<div class="top" style="display: flex; gap: 16px;margin-top: 6px;">
@@ -25,7 +25,8 @@
gap: 12px;
grid-template-columns: 1624px;
">
<operatingLineChartCumulative :dateData="dateData" :baseUrl="baseUrl" :totalData="totalData" />
<operatingLineChartCumulative :yName="'元/㎡'" :dateData="dateData" :baseUrl="baseUrl"
:totalData="totalData" />
<!-- <keyWork /> -->
</div>
</div>

View File

@@ -16,7 +16,7 @@
gap: 12px;
grid-template-columns:1624px;
">
<operatingLineChart :dateData="dateData" :baseUrl="baseUrl" :monData="monData" />
<operatingLineChart :yName="'元/㎡'" :dateData="dateData" :baseUrl="baseUrl" :monData="monData" />
</div>
</div>
<div class="top" style="display: flex; gap: 16px;margin-top: 6px;">
@@ -25,7 +25,8 @@
gap: 12px;
grid-template-columns: 1624px;
">
<operatingLineChartCumulative :dateData="dateData" :baseUrl="baseUrl" :totalData="totalData" />
<operatingLineChartCumulative :yName="'元/㎡'" :dateData="dateData" :baseUrl="baseUrl"
:totalData="totalData" />
<!-- <keyWork /> -->
</div>
</div>

View File

@@ -16,7 +16,7 @@
gap: 12px;
grid-template-columns:1624px;
">
<operatingLineChart :dateData="dateData" :baseUrl="baseUrl" :monData="monData" />
<operatingLineChart :yName="'元/㎡'" :dateData="dateData" :baseUrl="baseUrl" :monData="monData" />
</div>
</div>
<div class="top" style="display: flex; gap: 16px;margin-top: 6px;">
@@ -25,7 +25,7 @@
gap: 12px;
grid-template-columns: 1624px;
">
<operatingLineChartCumulative :dateData="dateData" :baseUrl="baseUrl" :totalData="totalData" />
<operatingLineChartCumulative :yName="'元/㎡'" :dateData="dateData" :baseUrl="baseUrl" :totalData="totalData" />
<!-- <keyWork /> -->
</div>
</div>

View File

@@ -45,7 +45,7 @@ export default {
const timeArr = []; // 格式化后的年月数组
const valueArr = []; // 实际值数组
const diffValueArr = []; // 差异值数组
const targetValueArr = []; // 目标值数组
const targetValueArr = []; // 预算值数组
const proportionArr = []; // 占比数组
const completedArr = []; // 完成率数组

View File

@@ -119,7 +119,7 @@ export default {
},
// 2. 目标(柱状图)
{
name: '目标',
name: '预算',
type: 'bar',
yAxisIndex: 0, // 左侧Y轴万元
barWidth: 14,

View File

@@ -117,7 +117,7 @@ export default {
},
// 2. 目标(柱状图)
{
name: '目标',
name: '预算',
type: 'bar',
yAxisIndex: 0, // 左侧Y轴万元
barWidth: 14,

View File

@@ -118,7 +118,7 @@ export default {
},
// 2. 目标(柱状图)
{
name: '目标',
name: '预算',
type: 'bar',
yAxisIndex: 0, // 左侧Y轴万元
barWidth: 14,

View File

@@ -119,7 +119,7 @@ export default {
},
// 2. 目标(柱状图)
{
name: '目标',
name: '预算',
type: 'bar',
yAxisIndex: 0, // 左侧Y轴万元
barWidth: 14,

View File

@@ -117,7 +117,7 @@ export default {
},
// 2. 目标(柱状图)
{
name: '目标',
name: '预算',
type: 'bar',
yAxisIndex: 0, // 左侧Y轴万元
barWidth: 14,

View File

@@ -117,7 +117,7 @@ export default {
},
// 2. 目标(柱状图)
{
name: '目标',
name: '预算',
type: 'bar',
yAxisIndex: 0, // 左侧Y轴万元
barWidth: 14,

View File

@@ -119,7 +119,7 @@ export default {
},
// 2. 目标(柱状图)
{
name: '目标',
name: '预算',
type: 'bar',
yAxisIndex: 0, // 左侧Y轴万元
barWidth: 14,

View File

@@ -116,7 +116,7 @@ export default {
},
// 2. 目标(柱状图)
{
name: '目标',
name: '预算',
type: 'bar',
yAxisIndex: 0, // 左侧Y轴万元
barWidth: 14,

View File

@@ -120,7 +120,7 @@ export default {
},
// 2. 目标(柱状图)
{
name: '目标',
name: '预算',
type: 'bar',
yAxisIndex: 0, // 左侧Y轴万元
barWidth: 14,

View File

@@ -116,7 +116,7 @@ export default {
},
// 2. 目标(柱状图)
{
name: '目标',
name: '预算',
type: 'bar',
yAxisIndex: 0, // 左侧Y轴万元
barWidth: 14,

View File

@@ -118,7 +118,7 @@ export default {
},
// 2. 目标(柱状图)
{
name: '目标',
name: '预算',
type: 'bar',
yAxisIndex: 0, // 左侧Y轴万元
barWidth: 14,

View File

@@ -117,7 +117,7 @@ export default {
},
// 2. 目标(柱状图)
{
name: '目标',
name: '预算',
type: 'bar',
yAxisIndex: 0, // 左侧Y轴万元
barWidth: 14,

View File

@@ -45,7 +45,7 @@ export default {
const timeArr = []; // 格式化后的年月数组
const valueArr = []; // 实际值数组
const diffValueArr = []; // 差异值数组
const targetValueArr = []; // 目标值数组
const targetValueArr = []; // 预算值数组
const proportionArr = []; // 占比数组
const completedArr = []; // 完成率数组

View File

@@ -45,7 +45,7 @@ export default {
const timeArr = []; // 格式化后的年月数组
const valueArr = []; // 实际值数组
const diffValueArr = []; // 差异值数组
const targetValueArr = []; // 目标值数组
const targetValueArr = []; // 预算值数组
const proportionArr = []; // 占比数组
const completedArr = []; // 完成率数组

View File

@@ -45,7 +45,7 @@ export default {
const timeArr = []; // 格式化后的年月数组
const valueArr = []; // 实际值数组
const diffValueArr = []; // 差异值数组
const targetValueArr = []; // 目标值数组
const targetValueArr = []; // 预算值数组
const proportionArr = []; // 占比数组
const completedArr = []; // 完成率数组

View File

@@ -44,7 +44,7 @@ export default {
const timeArr = []; // 格式化后的年月数组
const valueArr = []; // 实际值数组
const diffValueArr = []; // 差异值数组
const targetValueArr = []; // 目标值数组
const targetValueArr = []; // 预算值数组
const proportionArr = []; // 占比数组
const completedArr = []; // 完成率数组

View File

@@ -44,7 +44,7 @@ export default {
const timeArr = []; // 格式化后的年月数组
const valueArr = []; // 实际值数组
const diffValueArr = []; // 差异值数组
const targetValueArr = []; // 目标值数组
const targetValueArr = []; // 预算值数组
const proportionArr = []; // 占比数组
const completedArr = []; // 完成率数组

Some files were not shown because too many files have changed in this diff Show More