From d4255374b1dfeb673258f484dca0b7137d1e824b Mon Sep 17 00:00:00 2001
From: liyong <18434998025@163.com>
Date: 星期二, 20 一月 2026 13:31:32 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/dev_天津军泰伟业' into dev_天津军泰伟业
---
src/views/index.vue | 15 ++-
src/views/reportAnalysis/dataDashboard/index.vue | 165 +++++++++++++++++++++++++++++++++-------
src/views/inventoryManagement/stockManagement/index.vue | 19 +++-
3 files changed, 155 insertions(+), 44 deletions(-)
diff --git a/src/views/index.vue b/src/views/index.vue
index e6b22c5..8460309 100644
--- a/src/views/index.vue
+++ b/src/views/index.vue
@@ -537,13 +537,14 @@
const res = await approveAndDeviceTodos()
const { approveTodo, deviceRepairTodo } = res.data
- // 鏄剧ず閫氱煡
- ElNotification({
- title: '寰呭姙浜嬮」鎻愰啋',
- message: `褰撳墠鏈�${approveTodo}鏉″緟瀹℃壒浜嬮」锛�${deviceRepairTodo}鏉″緟缁翠慨浜嬮」`,
- type: 'warning',
- duration: 5000
- })
+ // 褰揳pproveTodo鍜宒eviceRepairTodo鍚�>0鏃舵樉绀洪�氱煡
+ if (approveTodo > 0 || deviceRepairTodo > 0) {
+ ElNotification({
+ title: '寰呭姙浜嬮」鎻愰啋',
+ message: `褰撳墠鏈�${approveTodo}鏉″緟瀹℃壒浜嬮」锛�${deviceRepairTodo}鏉″緟缁翠慨浜嬮」`,
+ type: 'warning',
+ duration: 5000
+ })}
} catch (error) {
console.error('鑾峰彇鍗忓悓寰呭姙浜嬮」澶辫触:', error)
}
diff --git a/src/views/inventoryManagement/stockManagement/index.vue b/src/views/inventoryManagement/stockManagement/index.vue
index 08d05bd..88ca4ff 100644
--- a/src/views/inventoryManagement/stockManagement/index.vue
+++ b/src/views/inventoryManagement/stockManagement/index.vue
@@ -47,12 +47,15 @@
label="搴忓彿"
type="index"
width="60" />
+ <el-table-column label="鍏ュ簱鏃ユ湡"
+ prop="createTime"
+ width="120">
+ <template #default="scope">
+ {{ parseTime(scope.row.createTime, '{y}-{m}-{d}') || '-' }}
+ </template>
+ </el-table-column>
<el-table-column label="浜у搧鍚嶇О"
prop="productName"
- width="180"
- show-overflow-tooltip />
- <el-table-column label="浜у搧缂栧彿"
- prop="productCode"
width="180"
show-overflow-tooltip />
<el-table-column label="浜у搧瑙勬牸"
@@ -129,8 +132,12 @@
width="60" />
<el-table-column label="鍏ュ簱鏃ユ湡"
prop="createTime"
- width="100"
- show-overflow-tooltip />
+ width="120"
+ show-overflow-tooltip>
+ <template #default="scope">
+ {{ parseTime(scope.row.createTime, '{y}-{m}-{d}') || '-' }}
+ </template>
+ </el-table-column>
<el-table-column label="閲囪喘鍚堝悓鍙�"
prop="purchaseContractNumber"
width="180"
diff --git a/src/views/reportAnalysis/dataDashboard/index.vue b/src/views/reportAnalysis/dataDashboard/index.vue
index 3937cba..566d7ea 100644
--- a/src/views/reportAnalysis/dataDashboard/index.vue
+++ b/src/views/reportAnalysis/dataDashboard/index.vue
@@ -22,34 +22,44 @@
<div class="left-panel">
<!-- 瀹㈡埛淇℃伅缁熻鍒嗘瀽 -->
<div class="panel-header">
- <span class="panel-title">瀹㈡埛淇℃伅缁熻鍒嗘瀽</span>
+ <span class="panel-title">鍦ㄥ埗鍝佺粺璁″垎鏋�</span>
</div>
<div class="panel-item-customers">
- <div class="panel-title-second">
- <div class="panel-title-icon"></div>
- <div class="total-customers">
- <span class="label">鎬诲悎鍚岄噾棰�(鍏�)</span>
- <span class="value">{{sum}}</span>
+ <div class="quality-cards">
+ <div class="quality-cardSec">
+ <div class="quality-card one"></div>
+ <div class="quality-cardTitle">
+ <div>鎬诲湪鍒舵暟閲�</div>
+ <div>{{workInProcessStatistics.totalQuantity}}浠�</div>
+ </div>
</div>
-<!-- <div class="jiantou"></div>-->
+ <div class="quality-cardSec">
+ <div class="quality-card two"></div>
+ <div class="quality-cardTitle">
+ <div>骞冲潎鍛ㄨ浆澶╂暟</div>
+ <div>{{workInProcessStatistics.avgTurnoverDays}}澶�</div>
+ </div>
+ </div>
+ <div class="quality-cardSec">
+ <div class="quality-card three"></div>
+ <div class="quality-cardTitle">
+ <div>鍛ㄨ浆鏁堢巼</div>
+ <div>{{workInProcessStatistics.turnoverEfficiency}}%</div>
+ </div>
+ </div>
</div>
- <!-- 楗煎浘鍖哄煙 -->
- <div style="display: flex;align-items: center;gap: 20px;justify-content: space-evenly;height: 82%;margin-top: 20px">
- <div style="width: 240px; height: 240px; background-image: url('/src/assets/BI/zonghetongbingtubiankuang@2x.png'); background-size: contain; background-position: center; background-repeat: no-repeat; display: flex; align-items: center; justify-content: center;">
- <Echarts ref="chart" :legend="pieLegend" :chartStyle="chartStylePie"
- :series="materialPieSeries"
- :tooltip="pieTooltip"
- :options="{backgroundColor: 'transparent'}"
- style="margin-left: 5px;"></Echarts>
- </div>
- <ul class="contract-list" style="margin: 0; padding: 0; display: flex; flex-direction: column;justify-content: space-around; height: 100%; overflow-y: auto; scroll-behavior: smooth;" ref="refContractList">
- <li v-for="item in materialPieSeries[0].data" :key="item.name" style="list-style: none; margin-bottom: 12px;">
- <div style="display: flex;align-items: center;justify-content: space-between;width: 100%">
- <div class="line" :style="{color: item.itemStyle.color}">鈻� {{item.name}}</div>
- <div style="font-weight: 700;font-size: 16px;color: #85B1E4;">锟{item.value}}</div>
- </div>
- </li>
- </ul>
+ <!-- 宸ュ簭鍦ㄥ埗鍝佹暟閲忔煴鐘跺浘 -->
+ <div style="height: 82%;margin-top: 20px">
+ <Echarts ref="chart"
+ :chartStyle="chartStyle"
+ :grid="grid"
+ :legend="workInProcessBarLegend"
+ :series="workInProcessBarSeries"
+ :tooltip="tooltip"
+ :xAxis="workInProcessXAxis"
+ :yAxis="workInProcessYAxis"
+ :options="{backgroundColor: 'transparent', textStyle: {color: '#B8C8E0'}}"
+ style="height: 100%"></Echarts>
</div>
</div>
@@ -63,21 +73,21 @@
<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>鍑哄巶妫�鏁�</div>
<div>{{qualityStatisticsObject.factoryNum}}浠�</div>
</div>
</div>
@@ -179,7 +189,7 @@
</div>
<div class="main-panel">
<div class="panel-item-customers">
- <div class="order-statistics-cards">
+ <div class="order-statistics-cards" style="margin-bottom: 0px;">
<div class="quality-cardSec">
<div class="quality-card four"></div>
<div class="quality-cardTitle">
@@ -209,7 +219,7 @@
</div>
</div>
</div>
- <div class="progress-table-container" ref="progressTableRef" @scroll="handleTableScroll">
+ <div class="progress-table-container" ref="progressTableRef" style="margin-top: 0px;" @scroll="handleTableScroll">
<table class="progress-table">
<thead>
<tr>
@@ -350,8 +360,8 @@
const rowsUnderHeader = ref(new Set())
const chartStylePie = {
- width: '140%',
- height: '140%' // 璁剧疆鍥捐〃瀹瑰櫒鐨勯珮搴�
+ width: '100%',
+ height: '100%' // 璁剧疆鍥捐〃瀹瑰櫒鐨勯珮搴�
}
const materialPieSeries = ref([
{
@@ -403,6 +413,13 @@
uncompletedOrderCount: 0,
partialCompletedOrderCount: 0,
completedOrderCount: 0,
+})
+
+// 鍦ㄥ埗鍝佸懆杞粺璁″璞�
+const workInProcessStatistics = ref({
+ totalQuantity: 0,
+ avgTurnoverDays: 0,
+ turnoverEfficiency: 0,
})
const chartStyle = {
width: '100%',
@@ -646,6 +663,54 @@
axisLabel: { color: '#B8C8E0' }
}]
+// 鍦ㄥ埗鍝佸伐搴忔煴鐘跺浘閰嶇疆
+const workInProcessXAxis = ref([{
+ type: 'category',
+ axisTick: { show: false },
+ axisLabel: { color: '#B8C8E0' },
+ data: []
+}])
+const workInProcessYAxis = [{
+ type: 'value',
+ axisLabel: { color: '#B8C8E0' },
+ name: ''
+}]
+const workInProcessBarLegend = {
+ show: false,
+ textStyle: { color: '#B8C8E0' },
+ data: []
+}
+const workInProcessBarSeries = ref([
+ {
+ name: '鍦ㄥ埗鍝佹暟閲�',
+ type: 'bar',
+ barWidth: 25, // 鍥哄畾鏌辩姸鍥惧搴︿负40px
+ barGap: 0,
+ emphasis: {
+ focus: 'series'
+ },
+ itemStyle: {
+ color: {
+ type: 'linear',
+ x: 0,
+ y: 0,
+ x2: 0,
+ y2: 1,
+ colorStops: [
+ { offset: 0, color: '#4EE4FF' },
+ { offset: 1, color: '#00A4ED' }
+ ]
+ }
+ },
+ label: {
+ show: true,
+ position: 'top',
+ color: '#B8C8E0'
+ },
+ data: []
+ }
+])
+
// 寰呭姙浜嬮」
const todoList = ref([])
@@ -727,6 +792,43 @@
...item,
itemStyle: { color: getRandomColor() }
}))
+ })
+}
+// 鍦ㄥ埗鍝佸懆杞粺璁�
+const workInProcessTurnoverInfo = () => {
+ getWorkInProcessTurnover().then((res) => {
+ console.log("鍦ㄥ埗鍝佸懆杞粺璁℃暟鎹�:", res)
+
+ if (!res || !res.data) {
+ console.warn('鍦ㄥ埗鍝佸懆杞粺璁℃暟鎹负绌�')
+ return
+ }
+
+ // 浠庢帴鍙h幏鍙栫粺璁℃暟鎹�
+ workInProcessStatistics.value = {
+ totalQuantity: res.data.totalOrderCount || 0,
+ avgTurnoverDays: res.data.averageTurnoverDays || 0,
+ turnoverEfficiency: res.data.turnoverEfficiency || 0,
+ }
+
+ // 璁剧疆宸ュ簭鏌辩姸鍥炬暟鎹�
+ // X杞达細processDetails (宸ュ簭璇︽儏鏁扮粍)
+ // Y杞达細processQuantityDetails (宸ュ簭鏁伴噺璇︽儏鏁扮粍)
+ if (res.data.processDetails && Array.isArray(res.data.processDetails)) {
+ // 璁剧疆X杞存暟鎹紙宸ュ簭鍚嶇О锛�
+ workInProcessXAxis.value[0].data = res.data.processDetails
+ } else {
+ workInProcessXAxis.value[0].data = []
+ }
+
+ if (res.data.processQuantityDetails && Array.isArray(res.data.processQuantityDetails)) {
+ // 璁剧疆Y杞存暟鎹紙鍦ㄥ埗鍝佹暟閲忥級
+ workInProcessBarSeries.value[0].data = res.data.processQuantityDetails
+ } else {
+ workInProcessBarSeries.value[0].data = []
+ }
+ }).catch((error) => {
+ console.error('鑾峰彇鍦ㄥ埗鍝佸懆杞粺璁″け璐�:', error)
})
}
// 璐ㄦ缁熻
@@ -1281,6 +1383,7 @@
window.addEventListener('webkitfullscreenchange', handleFullscreenChange)
window.addEventListener('MSFullscreenChange', handleFullscreenChange)
analysisCustomer()
+ workInProcessTurnoverInfo()
qualityStatisticsInfo()
// accountStatisticsInfo()
progressStatisticsInfo()
--
Gitblit v1.9.3