src/views/reportAnalysis/dataDashboard/index.vue
@@ -12,6 +12,7 @@
      <!-- 顶部标题栏 -->
      <div class="dashboard-header">
        <div class="factory-name">{{ userStore.currentFactoryName }}</div>
      </div>
      <!-- 主要内容区域 -->
@@ -53,7 +54,7 @@
        <!-- 质量统计 -->
            <div class="panel-header">
               <span class="panel-title">质量统计</span>
               <span class="panel-title">近4个月质量统计</span>
            </div>
            <div class="main-panel">
               <div class="panel-item-customers">
@@ -129,48 +130,73 @@
          </div>
          <div class="equipment-items">
            <div class="equipment-item">
              <span class="equipment-value">{{equipmentNum}}</span>
              <span class="equipment-value">21</span>
              <span class="equipment-label">设备总数</span>
            </div>
            <div class="equipment-item">
              <span class="equipment-value">{{equipmentRepair}}</span>
              <span class="equipment-value">3</span>
              <span class="equipment-label">待维修设备</span>
            </div>
            <div class="equipment-item">
              <span class="equipment-value">{{equipmentMaintain}}</span>
              <span class="equipment-value">4</span>
              <span class="equipment-label">待保养设备</span>
            </div>
            <div class="equipment-item">
            <!-- <div class="equipment-item">
              <span class="equipment-value">{{totalMeasuring}}</span>
              <span class="equipment-label">计量器具总数</span>
            </div> -->
          </div>
        </div>
        <!-- 合格率 -->
        <div class="equipment-stats">
          <div class="equipment-header">
                  <img src="@/assets/BI/shujutongjiicon@2x.png" alt="图标" class="equipment-icon" />
            <span class="equipment-title">质检统计</span>
          </div>
          <div class="equipment-items">
            <div class="equipment-item">
              <span class="equipment-value">{{rawMaterialQualifiedRate}}%</span>
              <span class="equipment-label">原材料合格率</span>
            </div>
            <div class="equipment-item">
              <span class="equipment-value">{{processQualifiedRate}}%</span>
              <span class="equipment-label">过程合格率</span>
            </div>
            <div class="equipment-item">
              <span class="equipment-value">{{factoryQualifiedRate}}%</span>
              <span class="equipment-label">出厂合格率</span>
            </div>
            <div class="equipment-item">
              <span class="equipment-value">{{inventoryTurnoverRate}}%</span>
              <span class="equipment-label">库存周转率</span>
            </div>
          </div>
        </div>
        <!-- 事件名称 -->
        <div class="event-info">
          <div class="event-header">
                  <img src="@/assets/BI/shijianmingxiicon@2x.png" alt="图标" class="event-icon" />
            <span class="event-title">事件名称</span>
          </div>
          <div class="event-content">
                  <ul class="todo-list" v-if="todoList.length > 0" ref="refTodoList">
   <li v-for="item in todoList" :key="item.id">
    <div style="display: flex;flex-direction: column;justify-content: space-between;width: 100%;gap: 20px">
     <div style="display: flex;justify-content: space-between;align-items: center;">
      <div class="todo-title">待办编号:{{item.approveId}}</div>
      <div class="todo-division">部门:{{item.approveDeptName}}</div>
      <div class="todo-time">{{item.approveTime}}</div>
     </div>
     <div class="todo-division">待办事由:{{item.approveReason}}</div>
    </div>
   </li>
 </ul>
                  <div v-else style="text-align: center">
                     暂无数据
                  </div>
          </div>
        </div>
<!--        <div class="event-info">-->
<!--          <div class="event-header">-->
<!--                  <img src="@/assets/BI/shijianmingxiicon@2x.png" alt="图标" class="event-icon" />-->
<!--            <span class="event-title">事件名称</span>-->
<!--          </div>-->
<!--          <div class="event-content">-->
<!--                  <ul class="todo-list" v-if="todoList.length > 0" ref="refTodoList"> -->
<!--   <li v-for="item in todoList" :key="item.id"> -->
<!--    <div style="display: flex;flex-direction: column;justify-content: space-between;width: 100%;gap: 20px"> -->
<!--     <div style="display: flex;justify-content: space-between;align-items: center;"> -->
<!--      <div class="todo-title">待办编号:{{item.approveId}}</div> -->
<!--      <div class="todo-division">部门:{{item.approveDeptName}}</div> -->
<!--      <div class="todo-time">{{item.approveTime}}</div> -->
<!--     </div> -->
<!--     <div class="todo-division">待办事由:{{item.approveReason}}</div> -->
<!--    </div> -->
<!--   </li> -->
<!-- </ul>-->
<!--                  <div v-else style="text-align: center">-->
<!--                     暂无数据-->
<!--                  </div>-->
<!--          </div>-->
<!--        </div>-->
            
            <div class="financial-header">
               <span class="financial-title">财务分析</span>
@@ -190,7 +216,7 @@
                               :xAxis="xAxis3"
                               :yAxis="yAxis3"
                               :options="{backgroundColor: 'transparent', textStyle: {color: '#B8C8E0'}}"
                               style="height: 300px"></Echarts>
                               style="height: 280px"></Echarts>
               </div>
            </div>
      </div>
@@ -204,11 +230,11 @@
            <div class="panel-item-customers">
               <div style="display: flex;justify-content: space-between;margin-bottom: 20px;">
                  <div class="section-title">应收应付统计</div>
                  <el-radio-group v-model="radio1" size="large" @change="statisticsReceivable" class="custom-radio-group">
                     <el-radio-button label="按周" :value="1" />
                     <el-radio-button label="按月" :value="2" />
                     <el-radio-button label="按季度" :value="3" />
                  </el-radio-group>
<!--                  <el-radio-group v-model="radio1" size="large" @change="statisticsReceivable" class="custom-radio-group">-->
<!--                     <el-radio-button label="按周" :value="1" />-->
<!--                     <el-radio-button label="按月" :value="2" />-->
<!--                     <el-radio-button label="按季度" :value="3" />-->
<!--                  </el-radio-group>-->
               </div>
               <Echarts ref="chart"
                            :color="barColors2"
@@ -241,9 +267,10 @@
import { ref, onMounted, onBeforeUnmount, nextTick } from 'vue'
import autofit from 'autofit.js'
import Echarts from "@/components/Echarts/echarts.vue";
import useUserStore from '@/store/modules/user'
import {
   analysisCustomerContractAmounts, getAmountHalfYear,
   homeTodos,
   homeTodos, qualityProductQualifiedRate,
   qualityStatistics,
   statisticsReceivablePayable
} from "@/api/viewIndex.js";
@@ -258,6 +285,9 @@
// 全屏相关状态
const isFullscreen = ref(false);
// 用户store
const userStore = useUserStore()
// 响应式数据
const currentTime = ref('')
@@ -307,6 +337,10 @@
const equipmentRepair = ref(0)
const equipmentMaintain = ref(0)
const totalMeasuring = ref(0)
const rawMaterialQualifiedRate = ref(0)
const processQualifiedRate = ref(0)
const factoryQualifiedRate = ref(0)
const inventoryTurnoverRate = ref(0)
const pieTooltip = reactive({
   trigger: 'item',
   formatter: function (params) {
@@ -407,7 +441,7 @@
const barLegend = {
   show: true,
   textStyle: { color: '#B8C8E0' },
   data: ['原材料不合格数', '过程不合格数', '出厂不合格数']
   data: ['原材料合格数', '过程合格数', '出厂合格数']
}
const barLegend1 = {
   show: true,
@@ -482,7 +516,7 @@
])
const barSeries1 = ref([
   {
      name: '原材料不合格数',
      name: '原材料合格数',
      type: 'bar',
      barGap: 0,
      emphasis: {
@@ -504,7 +538,7 @@
      data: []
   },
   {
      name: '过程不合格数',
      name: '过程合格数',
      type: 'bar',
      emphasis: {
         focus: 'series'
@@ -525,7 +559,7 @@
      data: []
   },
   {
      name: '出厂不合格数',
      name: '出厂合格数',
      type: 'bar',
      emphasis: {
         focus: 'series'
@@ -633,6 +667,15 @@
      qualityStatisticsObject.value.supplierNum = res.data.supplierNum
      qualityStatisticsObject.value.processNum = res.data.processNum
      qualityStatisticsObject.value.factoryNum = res.data.factoryNum
   })
}
// 产品合格率
const qualityProductQualifiedRateInfo = () => {
   qualityProductQualifiedRate().then((res) => {
      rawMaterialQualifiedRate.value = res.data.rawMaterialQualifiedRate
      processQualifiedRate.value = res.data.processQualifiedRate
      factoryQualifiedRate.value = res.data.factoryQualifiedRate
      inventoryTurnoverRate.value = res.data.inventoryTurnoverRate
   })
}
// 财务统计
@@ -915,7 +958,7 @@
  // 使用nextTick确保DOM完全渲染后再初始化图表
  nextTick(() => {
    // 初始化autofit自适应
    autofit.init({ dh: 1440, dw: 2560, el: '.data-dashboard', resize: true }, false)
    autofit.init({ dh: 1080, dw: 1920, el: '.data-dashboard', resize: true }, false)
    
    // 添加自动滚动动画效果 - 客户信息列表
    const contractList = refContractList.value
@@ -977,6 +1020,7 @@
  window.addEventListener('resize', handleResize)
  analysisCustomer()
  qualityStatisticsInfo()
   qualityProductQualifiedRateInfo()
   accountStatisticsInfo()
  getNum()
  getLedgerNum()
@@ -1044,7 +1088,6 @@
  position: relative;
  width: 100%;
   height: 100%;
  overflow: hidden;
   background-image: url("@/assets/BI/backImage@2x.png");
   background-size: cover;
   background-position: center;
@@ -1090,6 +1133,17 @@
   background-size: cover;
   background-position: center;
   background-repeat: no-repeat;
  display: flex;
  align-items: center;
  justify-content: center;
}
.factory-name {
  font-weight: 600;
font-size: 52px;
color: #FFFFFF;
top: 32px;
position: absolute;
}
.fullscreen-btn {
@@ -1149,7 +1203,7 @@
   border: 1px solid #1A58B0;
   padding: 18px;
   width: 100%;
   height: 540px;
   height: 520px;
}
.panel-title-second {
   height: 60px;