| | |
| | | </div> |
| | | |
| | | <!-- 质量统计 --> |
| | | <!-- <div class="panel-header">--> |
| | | <!-- <span class="panel-title">近4个月质量统计</span>--> |
| | | <!-- </div>--> |
| | | <!-- <div class="main-panel">--> |
| | | <!-- <div class="panel-item-customers">--> |
| | | <!-- <div class="quality-cards">--> |
| | | <!-- <div class="quality-cardSec">--> |
| | | <!-- <div class="quality-card one"></div>--> |
| | | <!-- <div class="quality-cardTitle">--> |
| | | <!-- <div>原材料已检测数</div>--> |
| | | <!-- <div>{{qualityStatisticsObject.supplierNum}}件</div>--> |
| | | <!-- </div>--> |
| | | <!-- </div>--> |
| | | <!-- <div class="quality-cardSec">--> |
| | | <!-- <div class="quality-card two"></div>--> |
| | | <!-- <div class="quality-cardTitle">--> |
| | | <!-- <div>过程检验数量</div>--> |
| | | <!-- <div>{{qualityStatisticsObject.processNum}}件</div>--> |
| | | <!-- </div>--> |
| | | <!-- </div>--> |
| | | <!-- <div class="quality-cardSec">--> |
| | | <!-- <div class="quality-card three"></div>--> |
| | | <!-- <div class="quality-cardTitle">--> |
| | | <!-- <div>出厂已检数量</div>--> |
| | | <!-- <div>{{qualityStatisticsObject.factoryNum}}件</div>--> |
| | | <!-- </div>--> |
| | | <!-- </div>--> |
| | | <!-- </div>--> |
| | | <!-- <Echarts ref="chart"--> |
| | | <!-- :chartStyle="chartStyle"--> |
| | | <!-- :grid="grid"--> |
| | | <!-- :legend="barLegend"--> |
| | | <!-- :series="barSeries1"--> |
| | | <!-- :tooltip="tooltip"--> |
| | | <!-- :xAxis="xAxis1"--> |
| | | <!-- :yAxis="yAxis1"--> |
| | | <!-- :options="{backgroundColor: 'transparent', textStyle: {color: '#B8C8E0'}}"--> |
| | | <!-- style="height: 260px"></Echarts>--> |
| | | <!-- </div>--> |
| | | <!-- </div>--> |
| | | <!-- </div>--> |
| | | <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"> |
| | |
| | | <div class="quality-cardSec"> |
| | | <div class="quality-card one"></div> |
| | | <div class="quality-cardTitle"> |
| | | <div>原材料已检测数</div> |
| | | <div>入库数量</div> |
| | | <div>{{qualityStatisticsObject.supplierNum}}件</div> |
| | | </div> |
| | | </div> |
| | | <div class="quality-cardSec"> |
| | | <div class="quality-card two"></div> |
| | | <div class="quality-cardTitle"> |
| | | <div>过程检验数量</div> |
| | | <div>出库数量</div> |
| | | <div>{{qualityStatisticsObject.processNum}}件</div> |
| | | </div> |
| | | </div> |
| | | <div class="quality-cardSec"> |
| | | <div class="quality-card three"></div> |
| | | <div class="quality-cardTitle"> |
| | | <div>出厂已检数量</div> |
| | | <div>{{qualityStatisticsObject.factoryNum}}件</div> |
| | | </div> |
| | | </div> |
| | | <!-- <div class="quality-cardSec">--> |
| | | <!-- <div class="quality-card three"></div>--> |
| | | <!-- <div class="quality-cardTitle">--> |
| | | <!-- <div>出厂已检数量</div>--> |
| | | <!-- <div>{{qualityStatisticsObject.factoryNum}}件</div>--> |
| | | <!-- </div>--> |
| | | <!-- </div>--> |
| | | </div> |
| | | <Echarts ref="chart" |
| | | :chartStyle="chartStyle" |
| | |
| | | <div class="equipment-stats"> |
| | | <div class="equipment-header"> |
| | | <img src="@/assets/BI/shujutongjiicon@2x.png" alt="图标" class="equipment-icon" /> |
| | | <span class="equipment-title">设备统计</span> |
| | | <span class="equipment-title">生产统计</span> |
| | | </div> |
| | | <div class="equipment-items"> |
| | | <div class="equipment-item"> |
| | | <span class="equipment-value">{{equipmentNum}}</span> |
| | | <span class="equipment-label">设备总数</span> |
| | | <span class="equipment-value">{{noWorkListLength}}</span> |
| | | <span class="equipment-label">待排产</span> |
| | | </div> |
| | | <div class="equipment-item"> |
| | | <span class="equipment-value">{{equipmentRepair}}</span> |
| | | <span class="equipment-label">待维修设备</span> |
| | | <span class="equipment-value">{{workListLength}}</span> |
| | | <span class="equipment-label">已排产</span> |
| | | </div> |
| | | <div class="equipment-item"> |
| | | <span class="equipment-value">{{equipmentMaintain}}</span> |
| | | <span class="equipment-label">待保养设备</span> |
| | | <span class="equipment-value">{{noListPageProcessLength}}</span> |
| | | <span class="equipment-label">待报工</span> |
| | | </div> |
| | | <div class="equipment-item"> |
| | | <span class="equipment-value">{{totalMeasuring}}</span> |
| | | <span class="equipment-label">计量器具总数</span> |
| | | <span class="equipment-value">{{listPageProcessLength}}</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> |
| | |
| | | :xAxis="xAxis3" |
| | | :yAxis="yAxis3" |
| | | :options="{backgroundColor: 'transparent', textStyle: {color: '#B8C8E0'}}" |
| | | style="height: 300px"></Echarts> |
| | | style="height: 280px"></Echarts> |
| | | </div> |
| | | </div> |
| | | </div> |
| | |
| | | <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" |
| | |
| | | import useUserStore from '@/store/modules/user' |
| | | import { |
| | | analysisCustomerContractAmounts, getAmountHalfYear, |
| | | homeTodos, |
| | | homeTodos, qualityProductQualifiedRate, |
| | | qualityStatistics, |
| | | statisticsReceivablePayable |
| | | } from "@/api/viewIndex.js"; |
| | |
| | | import {getUpkeepPage} from "@/api/equipmentManagement/upkeep.js"; |
| | | import {measuringInstrumentListPage} from "@/api/equipmentManagement/measurementEquipment.js"; |
| | | import {listPageAnalysis} from "@/api/financialManagement/expenseManagement.js"; |
| | | import {workListPage} from "@/api/productionManagement/productionReporting.js"; |
| | | import {listPageProcess} from "@/api/productionManagement/operationScheduling.js"; |
| | | |
| | | // 全屏相关状态 |
| | | const isFullscreen = ref(false); |
| | |
| | | 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 noWorkListLength = ref(0) |
| | | const workListLength = ref(0) |
| | | const noListPageProcessLength = ref(0) |
| | | const listPageProcessLength = ref(0) |
| | | const pieTooltip = reactive({ |
| | | trigger: 'item', |
| | | formatter: function (params) { |
| | |
| | | const barLegend = { |
| | | show: true, |
| | | textStyle: { color: '#B8C8E0' }, |
| | | data: ['原材料不合格数', '过程不合格数', '出厂不合格数'] |
| | | data: ['原材料合格数', '过程合格数', '出厂合格数'] |
| | | } |
| | | const barLegend1 = { |
| | | show: true, |
| | |
| | | ]) |
| | | const barSeries1 = ref([ |
| | | { |
| | | name: '原材料不合格数', |
| | | name: '原材料合格数', |
| | | type: 'bar', |
| | | barGap: 0, |
| | | emphasis: { |
| | |
| | | data: [] |
| | | }, |
| | | { |
| | | name: '过程不合格数', |
| | | name: '过程合格数', |
| | | type: 'bar', |
| | | emphasis: { |
| | | focus: 'series' |
| | |
| | | data: [] |
| | | }, |
| | | { |
| | | name: '出厂不合格数', |
| | | name: '出厂合格数', |
| | | type: 'bar', |
| | | emphasis: { |
| | | focus: 'series' |
| | |
| | | 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 |
| | | }) |
| | | } |
| | | // 财务统计 |
| | | const accountStatisticsInfo = () => { |
| | | listPageAnalysis().then((res) => { |
| | |
| | | barSeries11.value[2].data = res.data.netIncome |
| | | }) |
| | | } |
| | | // 生产数据 |
| | | const workListPageInfo = () => { |
| | | const params = { |
| | | current: -1, |
| | | size: -1, |
| | | status: 3 |
| | | } |
| | | const params1 = { |
| | | current: -1, |
| | | size: -1, |
| | | status: 1 |
| | | } |
| | | // 已报工查询 |
| | | workListPage(params).then(res => { |
| | | workListLength.value = res.data.records.length |
| | | }) |
| | | // 已排产查询 |
| | | listPageProcess(params).then(res => { |
| | | listPageProcessLength.value = res.data.records.length |
| | | }) |
| | | // 待报工查询 |
| | | workListPage(params1).then(res => { |
| | | noWorkListLength.value = res.data.records.length |
| | | }) |
| | | // 待排产查询 |
| | | listPageProcess(params1).then(res => { |
| | | noListPageProcessLength.value = res.data.records.length |
| | | }) |
| | | } |
| | | |
| | | const getNum = () => { |
| | | const params = { |
| | | pageNum: -1, |
| | |
| | | pageNum: -1, |
| | | pageSize: -1, |
| | | } |
| | | getLedgerPage(params).then((res) => { |
| | | getLedgerPage({}).then((res) => { |
| | | equipmentNum.value = res.data.total |
| | | }); |
| | | getRepairPage(params).then((res) => { |
| | |
| | | window.addEventListener('resize', handleResize) |
| | | analysisCustomer() |
| | | qualityStatisticsInfo() |
| | | qualityProductQualifiedRateInfo() |
| | | accountStatisticsInfo() |
| | | workListPageInfo() |
| | | getNum() |
| | | getLedgerNum() |
| | | todoInfoS() |
| | |
| | | border: 1px solid #1A58B0; |
| | | padding: 18px; |
| | | width: 100%; |
| | | height: 540px; |
| | | height: 520px; |
| | | } |
| | | .panel-title-second { |
| | | height: 60px; |