From 19c62799136bb984e968fcb6b0a4d2371d018270 Mon Sep 17 00:00:00 2001 From: WXL (wul) <wl_5969728@163.com> Date: 星期一, 15 九月 2025 17:43:11 +0800 Subject: [PATCH] 人员信息展示更新 --- src/views/sfstatistics/percentage/index.vue | 574 ++++++++++++++++++++++++++++---------------------------- 1 files changed, 289 insertions(+), 285 deletions(-) diff --git a/src/views/sfstatistics/percentage/index.vue b/src/views/sfstatistics/percentage/index.vue index 42425ee..4e0c96d 100644 --- a/src/views/sfstatistics/percentage/index.vue +++ b/src/views/sfstatistics/percentage/index.vue @@ -185,7 +185,7 @@ prop="followUpNeeded" > </el-table-column> - <el-table-column align="center" label="棣栨鍑洪櫌闅忚"> + <el-table-column align="center" label="棣栨璇鹃闅忚"> <el-table-column label="闇�闅忚" align="center" @@ -341,7 +341,7 @@ </template> </el-table-column> <el-table-column - label="鍑洪櫌鐥呭尯" + label="鐥呭尯" align="center" sortable key="leavehospitaldistrictname" @@ -1277,298 +1277,302 @@ }, // 鍒濆鍖栭ゼ鍥� -initPieChart() { - const echarts = require("echarts"); - const pieDom = document.getElementById("pieChart"); - if (!pieDom) return; + initPieChart() { + const echarts = require("echarts"); + const pieDom = document.getElementById("pieChart"); + if (!pieDom) return; - if (this.pieChart) { - this.pieChart.dispose(); - } - - this.pieChart = echarts.init(pieDom); - - // 璁$畻楗煎浘鏁版嵁 - const followUpData = { - pending: 0, - success: 0, - fail: 0, - }; - - this.userList.forEach((item) => { - followUpData.pending += item.pendingFollowUp || 0; - followUpData.success += item.followUpSuccess || 0; - followUpData.fail += item.followUpFail || 0; - }); - - // 浣跨敤鏇寸編瑙傜殑棰滆壊鏂规 - const pieOption = { - title: { - text: "闅忚鐘舵�佸垎甯�", - left: "center", - textStyle: { - color: '#333', - fontSize: 16 + if (this.pieChart) { + this.pieChart.dispose(); } - }, - tooltip: { - trigger: "item", - formatter: "{a} <br/>{b}: {c} ({d}%)", - }, - legend: { - orient: "vertical", - left: "left", - data: ["寰呴殢璁�", "闅忚鎴愬姛", "闅忚澶辫触"], - textStyle: { - color: '#666' - } - }, - color: ['#FF9D4D', '#36B37E', '#FF5C5C'], // 鏂扮殑閰嶈壊鏂规 - series: [ - { - name: "闅忚鐘舵��", - type: "pie", - radius: ["40%", "70%"], - avoidLabelOverlap: true, - itemStyle: { - borderRadius: 10, - borderColor: "#fff", - borderWidth: 2 - }, - label: { - show: true, - formatter: "{b}: {c} ({d}%)", - color: '#333' - }, - emphasis: { - label: { - show: true, - fontSize: "18", - fontWeight: "bold" + + this.pieChart = echarts.init(pieDom); + + // 璁$畻楗煎浘鏁版嵁 + const followUpData = { + pending: 0, + success: 0, + fail: 0, + }; + + this.userList.forEach((item) => { + followUpData.pending += item.pendingFollowUp || 0; + followUpData.success += item.followUpSuccess || 0; + followUpData.fail += item.followUpFail || 0; + }); + + // 浣跨敤鏇寸編瑙傜殑棰滆壊鏂规 + const pieOption = { + title: { + text: "闅忚鐘舵�佸垎甯�", + left: "center", + textStyle: { + color: "#333", + fontSize: 16, }, - itemStyle: { - shadowBlur: 10, - shadowOffsetX: 0, - shadowColor: 'rgba(0, 0, 0, 0.5)' - } }, - data: [ - { - value: followUpData.pending, - name: "寰呴殢璁�" + tooltip: { + trigger: "item", + formatter: "{a} <br/>{b}: {c} ({d}%)", + }, + legend: { + orient: "vertical", + left: "left", + data: ["寰呴殢璁�", "闅忚鎴愬姛", "闅忚澶辫触"], + textStyle: { + color: "#666", }, + }, + color: ["#FF9D4D", "#36B37E", "#FF5C5C"], // 鏂扮殑閰嶈壊鏂规 + series: [ { - value: followUpData.success, - name: "闅忚鎴愬姛" - }, - { - value: followUpData.fail, - name: "闅忚澶辫触" - } - ] - } - ] - }; - - this.pieChart.setOption(pieOption); - window.addEventListener("resize", this.resizePieChart); -}, - -// 鍒濆鍖栨煴鐘舵姌绾垮浘 -initBarLineChart() { - const echarts = require("echarts"); - const barDom = document.getElementById("barLineChart"); - if (!barDom) return; - - if (this.barLineChart) { - this.barLineChart.dispose(); - } - - this.barLineChart = echarts.init(barDom); - - // 鍑嗗鏁版嵁 - const categories = this.userList.map( - (item) => item.leavehospitaldistrictname || item.deptname - ); - - const dischargeData = this.userList.map( - (item) => item.dischargeCount || 0 - ); - const followUpData = this.userList.map( - (item) => item.followUpNeeded || 0 - ); - - // 鏂板涓ゆ潯鎶樼嚎鏁版嵁 - const followUpRateData = this.userList.map(item => { - if (!item.followUpRate) return 0; - // 鍘绘帀鐧惧垎鍙峰苟杞负鏁板瓧 - const rateStr = String(item.followUpRate).replace('%', ''); - return parseFloat(rateStr) || 0; - }); - - const timelyRateData = this.userList.map(item => - item.rate ? (Number(item.rate) * 100).toFixed(2) : 0 - ); - - const option = { - title: { - text: "璇鹃缁�/鐥呭尯闅忚瓒嬪娍", - left: "center", - textStyle: { - color: '#333', - fontSize: 16 - } - }, - tooltip: { - trigger: "axis", - axisPointer: { - type: "cross", - crossStyle: { - color: "#999", - }, - }, - }, - legend: { - data: ["鍑洪櫌浜烘", "搴旈殢璁夸汉娆�", "闅忚鐜�(%)", "鍙婃椂鐜�(%)"], - top: "bottom", - textStyle: { - color: '#666' - } - }, - color: ['#5470C6', '#91CC75', '#EE6666', '#9A60B4'], // 鏂板绱壊鐢ㄤ簬鍙婃椂鐜� - xAxis: { - type: "category", - data: categories, - axisLabel: { - interval: 0, - rotate: 30, - color: '#666' - }, - axisLine: { - lineStyle: { - color: '#ddd' - } - } - }, - yAxis: [ - { - type: "value", - name: "浜烘", - min: 0, - axisLabel: { - color: '#666' - }, - axisLine: { - lineStyle: { - color: '#ddd' - } - }, - splitLine: { - lineStyle: { - color: '#f0f0f0' - } - } - }, - { - type: "value", - name: "鐧惧垎姣�(%)", - min: 0, - max: 100, - axisLabel: { - color: '#666', - formatter: '{value}%' - }, - axisLine: { - lineStyle: { - color: '#ddd' - } - }, - splitLine: { - show: false - } - } - ], - series: [ - { - name: "鍑洪櫌浜烘", - type: "bar", - barWidth: "25%", - data: dischargeData, - itemStyle: { - borderRadius: [4, 4, 0, 0] - } - }, - { - name: "搴旈殢璁夸汉娆�", - type: "bar", - barWidth: "25%", - data: followUpData, - itemStyle: { - borderRadius: [4, 4, 0, 0] - } - }, - { - name: "闅忚鐜�(%)", - type: "line", - yAxisIndex: 1, - data: followUpRateData, - symbolSize: 8, - lineStyle: { - width: 3 - }, - markLine: { - silent: true, - data: [{ - yAxis: 80, - lineStyle: { - color: '#EE6666', - type: 'dashed' + name: "闅忚鐘舵��", + type: "pie", + radius: ["40%", "70%"], + avoidLabelOverlap: true, + itemStyle: { + borderRadius: 10, + borderColor: "#fff", + borderWidth: 2, }, - // label: { - // position: 'end', - // formatter: '鐩爣80%' - // } - }] - } - }, - { - name: "鍙婃椂鐜�(%)", - type: "line", - yAxisIndex: 1, - data: timelyRateData, - symbolSize: 8, - lineStyle: { - width: 3, - type: 'dotted' // 浣跨敤铏氱嚎鍖哄垎 - }, - markLine: { - silent: true, - data: [{ - yAxis: 90, - lineStyle: { - color: '#9A60B4', - type: 'dashed' + label: { + show: true, + formatter: "{b}: {c} ({d}%)", + color: "#333", }, - // label: { - // position: 'end', - // formatter: '鐩爣90%' - // } - }] - } - } - ], - grid: { - top: '15%', - left: '3%', - right: '4%', - bottom: '15%', - containLabel: true - } - }; + emphasis: { + label: { + show: true, + fontSize: "18", + fontWeight: "bold", + }, + itemStyle: { + shadowBlur: 10, + shadowOffsetX: 0, + shadowColor: "rgba(0, 0, 0, 0.5)", + }, + }, + data: [ + { + value: followUpData.pending, + name: "寰呴殢璁�", + }, + { + value: followUpData.success, + name: "闅忚鎴愬姛", + }, + { + value: followUpData.fail, + name: "闅忚澶辫触", + }, + ], + }, + ], + }; - this.barLineChart.setOption(option); - window.addEventListener("resize", this.resizeBarLineChart); -}, + this.pieChart.setOption(pieOption); + window.addEventListener("resize", this.resizePieChart); + }, + + // 鍒濆鍖栨煴鐘舵姌绾垮浘 + initBarLineChart() { + const echarts = require("echarts"); + const barDom = document.getElementById("barLineChart"); + if (!barDom) return; + + if (this.barLineChart) { + this.barLineChart.dispose(); + } + + this.barLineChart = echarts.init(barDom); + + // 鍑嗗鏁版嵁 + const categories = this.userList.map( + (item) => item.leavehospitaldistrictname || item.deptname + ); + + const dischargeData = this.userList.map( + (item) => item.dischargeCount || 0 + ); + const followUpData = this.userList.map( + (item) => item.followUpNeeded || 0 + ); + + // 鏂板涓ゆ潯鎶樼嚎鏁版嵁 + const followUpRateData = this.userList.map((item) => { + if (!item.followUpRate) return 0; + // 鍘绘帀鐧惧垎鍙峰苟杞负鏁板瓧 + const rateStr = String(item.followUpRate).replace("%", ""); + return parseFloat(rateStr) || 0; + }); + + const timelyRateData = this.userList.map((item) => + item.rate ? (Number(item.rate) * 100).toFixed(2) : 0 + ); + + const option = { + title: { + text: "璇鹃缁�/鐥呭尯闅忚瓒嬪娍", + left: "center", + textStyle: { + color: "#333", + fontSize: 16, + }, + }, + tooltip: { + trigger: "axis", + axisPointer: { + type: "cross", + crossStyle: { + color: "#999", + }, + }, + }, + legend: { + data: ["鍑洪櫌浜烘", "搴旈殢璁夸汉娆�", "闅忚鐜�(%)", "鍙婃椂鐜�(%)"], + top: "bottom", + textStyle: { + color: "#666", + }, + }, + color: ["#5470C6", "#91CC75", "#EE6666", "#9A60B4"], // 鏂板绱壊鐢ㄤ簬鍙婃椂鐜� + xAxis: { + type: "category", + data: categories, + axisLabel: { + interval: 0, + rotate: 30, + color: "#666", + }, + axisLine: { + lineStyle: { + color: "#ddd", + }, + }, + }, + yAxis: [ + { + type: "value", + name: "浜烘", + min: 0, + axisLabel: { + color: "#666", + }, + axisLine: { + lineStyle: { + color: "#ddd", + }, + }, + splitLine: { + lineStyle: { + color: "#f0f0f0", + }, + }, + }, + { + type: "value", + name: "鐧惧垎姣�(%)", + min: 0, + max: 100, + axisLabel: { + color: "#666", + formatter: "{value}%", + }, + axisLine: { + lineStyle: { + color: "#ddd", + }, + }, + splitLine: { + show: false, + }, + }, + ], + series: [ + { + name: "鍑洪櫌浜烘", + type: "bar", + barWidth: "25%", + data: dischargeData, + itemStyle: { + borderRadius: [4, 4, 0, 0], + }, + }, + { + name: "搴旈殢璁夸汉娆�", + type: "bar", + barWidth: "25%", + data: followUpData, + itemStyle: { + borderRadius: [4, 4, 0, 0], + }, + }, + { + name: "闅忚鐜�(%)", + type: "line", + yAxisIndex: 1, + data: followUpRateData, + symbolSize: 8, + lineStyle: { + width: 3, + }, + markLine: { + silent: true, + data: [ + { + yAxis: 80, + lineStyle: { + color: "#EE6666", + type: "dashed", + }, + // label: { + // position: 'end', + // formatter: '鐩爣80%' + // } + }, + ], + }, + }, + { + name: "鍙婃椂鐜�(%)", + type: "line", + yAxisIndex: 1, + data: timelyRateData, + symbolSize: 8, + lineStyle: { + width: 3, + type: "dotted", // 浣跨敤铏氱嚎鍖哄垎 + }, + markLine: { + silent: true, + data: [ + { + yAxis: 90, + lineStyle: { + color: "#9A60B4", + type: "dashed", + }, + // label: { + // position: 'end', + // formatter: '鐩爣90%' + // } + }, + ], + }, + }, + ], + grid: { + top: "15%", + left: "3%", + right: "4%", + bottom: "15%", + containLabel: true, + }, + }; + + this.barLineChart.setOption(option); + window.addEventListener("resize", this.resizeBarLineChart); + }, // 鍥捐〃鍝嶅簲寮忚皟鏁存柟娉� resizePieChart() { -- Gitblit v1.9.3