Explorar el Código

feat(BusDynamics):增加三年数据对比功能

- 在多个组件中添加去年和前年数据对比
- 新增三年数据趋势图
- 优化数据处理逻辑,支持三年数据展示- 调整图表样式,增加新颜色以区分三年数据
nahida hace 1 año
padre
commit
0a10827d31

+ 1 - 1
.env.development

@@ -7,6 +7,6 @@ VITE_APP_ENV = 'development'
 # 桃江管理系统/开发环境
 VITE_APP_BASE_API = '/dev-api'
 
-VITE_APP_BASE_URL = 'https://192.168.110.13:20002'
+VITE_APP_BASE_URL = 'https://localhost:20002'
 
 VITE_AUTH_KEY = '性与暴力'

+ 24 - 0
src/utils/likeQueryMethod.js

@@ -38,4 +38,28 @@ export const likeQueryMethod = (columnName,queryStr,pageNum,pageSize,columnName2
         pageNum,
         pageSize
     })
+}
+
+export const likeQueryMethod2 = (columnName,queryStr,pageNum,pageSize,isDesc = false)=>{
+    let conditionJsonWhole = [];
+    if(queryStr != ''){
+        if(queryStr == null) queryStr = '';
+        conditionJsonWhole.push({
+            column:columnName,
+            type:'like',
+            value:queryStr
+        });
+    }
+    if(isDesc){
+        conditionJsonWhole.push({
+            column:'create_time',
+            type:'orderByDesc'
+        })
+    }
+    let s = encodeURIComponent(JSON.stringify(conditionJsonWhole));
+    return ({
+        conditionJson:s,
+        pageNum,
+        pageSize
+    })
 }

+ 40 - 12
src/views/BusDynamics/OPCMonitoring/index.vue

@@ -34,6 +34,7 @@ const echartsRef5 = ref(null);
 const currentYear = new Date().getFullYear();
 const isForbidden = ref(false);
 const lastYear = currentYear - 1;
+const lastLastYear = lastYear - 1;
 const setChartOption1 = async (res) => {
   if(res.code != 200) ElMessage.error(res.msg);
   const names = res.data.map(q=>{
@@ -45,6 +46,7 @@ const setChartOption1 = async (res) => {
   }).reverse();
   const currentYearData = res.data.map(q=>q.lastQuarterCurrentTotal?.toFixed(0)).reverse();
   const lastYearData = res.data.map(q=>q.lastQuarterLastTotal?.toFixed(0)).reverse();
+  const lastLastYearData = res.data.map(q=>q.lastLastQuarterLastTotal?.toFixed(0)).reverse();
   const chart = echarts.init(echartsRef.value);
   chart.setOption({
     title: {
@@ -57,7 +59,7 @@ const setChartOption1 = async (res) => {
       }
     },
     legend: {
-      data: [lastYear.toString(),currentYear.toString()]
+      data: [lastLastYear.toString(),lastYear.toString(),currentYear.toString()]
     },
     grid: {
       left: '3%',
@@ -74,11 +76,15 @@ const setChartOption1 = async (res) => {
       data: names
     },
     series: [
+      {
+        name: lastLastYear.toString(),
+        type: 'bar',
+        data: lastLastYearData,
+      },
       {
         name: lastYear.toString(),
         type: 'bar',
         data: lastYearData,
-
       },
       {
         name: currentYear.toString(),
@@ -108,6 +114,7 @@ const setChartOption3 = async (res) => {
   }).reverse();
   const currentYearData = res.data.map(q=>q.lastQuarterCurrentTotal?.toFixed(0)).reverse();
   const lastYearData = res.data.map(q=>q.lastQuarterLastTotal?.toFixed(0)).reverse();
+  const lastLastYearData = res.data.map(q=>q.lastLastQuarterLastTotal?.toFixed(0)).reverse();
   const chart = echarts.init(echartsRef3.value);
   chart.setOption({
     title: {
@@ -120,7 +127,7 @@ const setChartOption3 = async (res) => {
       }
     },
     legend: {
-      data: [lastYear.toString(),currentYear.toString()]
+      data: [lastLastYear.toString(),lastYear.toString(),currentYear.toString()]
     },
     grid: {
       left: '3%',
@@ -137,11 +144,15 @@ const setChartOption3 = async (res) => {
       data: names
     },
     series: [
+      {
+        name: lastLastYear.toString(),
+        type: 'bar',
+        data: lastLastYearData,
+      },
       {
         name: lastYear.toString(),
         type: 'bar',
         data: lastYearData,
-
       },
       {
         name: currentYear.toString(),
@@ -171,6 +182,7 @@ const setChartOption4 = async (res) => {
   }).reverse();
   const currentYearData = res.data.map(q=>q.lastQuarterCurrentTotal?.toFixed(0)).reverse();
   const lastYearData = res.data.map(q=>q.lastQuarterLastTotal?.toFixed(0)).reverse();
+  const lastLastYearData = res.data.map(q=>q.lastLastQuarterLastTotal?.toFixed(0)).reverse();
   const chart = echarts.init(echartsRef4.value);
   chart.setOption({
     title: {
@@ -183,7 +195,7 @@ const setChartOption4 = async (res) => {
       }
     },
     legend: {
-      data: [lastYear.toString(),currentYear.toString()]
+      data: [lastLastYear.toString(),lastYear.toString(),currentYear.toString()]
     },
     grid: {
       left: '3%',
@@ -200,11 +212,15 @@ const setChartOption4 = async (res) => {
       data: names
     },
     series: [
+      {
+        name: lastLastYear.toString(),
+        type: 'bar',
+        data: lastLastYearData,
+      },
       {
         name: lastYear.toString(),
         type: 'bar',
         data: lastYearData,
-
       },
       {
         name: currentYear.toString(),
@@ -233,10 +249,11 @@ const setChartOption5 = async (res) => {
     return q.enterpriseName+str;
   }).reverse();
   const currentYearData = res.data.map(q=>q.lastQuarterCurrentTotal?.toFixed(0)).reverse();
-  if(currentYearData[0] == null || currentYearData == undefined || currentYearData[0] == 0){
-    isForbidden.value = true;
-  }
+  // if(currentYearData[0] == null || currentYearData == undefined || currentYearData[0] == 0){
+  //   isForbidden.value = true;
+  // }
   const lastYearData = res.data.map(q=>q.lastQuarterLastTotal?.toFixed(0)).reverse();
+  const lastLastYearData = res.data.map(q=>q.lastLastQuarterLastTotal?.toFixed(0)).reverse();
   const chart = echarts.init(echartsRef5.value);
   chart.setOption({
     title: {
@@ -249,7 +266,7 @@ const setChartOption5 = async (res) => {
       }
     },
     legend: {
-      data: [lastYear.toString(),currentYear.toString()]
+      data: [lastLastYear.toString(),lastYear.toString(),currentYear.toString()]
     },
     grid: {
       left: '3%',
@@ -266,11 +283,15 @@ const setChartOption5 = async (res) => {
       data: names
     },
     series: [
+      {
+        name: lastLastYear.toString(),
+        type: 'bar',
+        data: lastLastYearData,
+      },
       {
         name: lastYear.toString(),
         type: 'bar',
         data: lastYearData,
-
       },
       {
         name: currentYear.toString(),
@@ -300,6 +321,8 @@ const setChartOption2 = async (res) => {
   }).reverse();
   const currentYearTotalData = res.data.map(q=>q.currentYearTotal?.toFixed(0)).reverse();
   const lastYearTotalData = res.data.map(q=>q.lastYearTotal?.toFixed(0)).reverse();
+  const lastLastYearTotalData = res.data.map(q=>q.lastLastYearTotal?.toFixed(0)).reverse();
+
   const chart = echarts.init(echartsRef2.value);
   chart.setOption({
     title: {
@@ -325,7 +348,7 @@ const setChartOption2 = async (res) => {
       '#c4ccd3'
     ],
     legend: {
-      data: [lastYear.toString(),currentYear.toString()]
+      data: [lastLastYear.toString(),lastYear.toString(),currentYear.toString()]
     },
     grid: {
       left: '3%',
@@ -342,6 +365,11 @@ const setChartOption2 = async (res) => {
       data: names
     },
     series: [
+      {
+        name: lastLastYear.toString(),
+        type: 'bar',
+        data: lastLastYearTotalData
+      },
       {
         name: lastYear.toString(),
         type: 'bar',

+ 44 - 14
src/views/BusDynamics/TaxMonitoring/index.vue

@@ -40,6 +40,7 @@ const echartsRef5 = ref(null);
 const isForbidden = ref(false);
 const currentYear = new Date().getFullYear();
 const lastYear = currentYear - 1;
+const lastLastYear = lastYear - 1;
 const setChartOption1 = async (res) => {
   if(res.code != 200) ElMessage.error(res.msg);
   const names = res.data.map(q=>{
@@ -51,6 +52,7 @@ const setChartOption1 = async (res) => {
   }).reverse();
   const currentYearData = res.data.map(q=>q.lastQuarterCurrentTotal?.toFixed(0)).reverse();
   const lastYearData = res.data.map(q=>q.lastQuarterLastTotal?.toFixed(0)).reverse();
+  const lastLastYearData = res.data.map(q=>q.lastLastQuarterLastTotal?.toFixed(0)).reverse();
   const chart = echarts.init(echartsRef.value);
   chart.setOption({
     title: {
@@ -63,7 +65,7 @@ const setChartOption1 = async (res) => {
       }
     },
     legend: {
-      data: [lastYear.toString(),currentYear.toString()]
+      data: [lastLastYear.toString(),lastYear.toString(),currentYear.toString()]
     },
     grid: {
       left: '3%',
@@ -80,6 +82,11 @@ const setChartOption1 = async (res) => {
       data: names
     },
     series: [
+      {
+        name: lastLastYear.toString(),
+        type: 'bar',
+        data: lastLastYearData,
+      },
       {
         name: lastYear.toString(),
         type: 'bar',
@@ -89,7 +96,7 @@ const setChartOption1 = async (res) => {
         name: currentYear.toString(),
         type: 'bar',
         data: currentYearData
-      }
+      },
     ],
     dataZoom: [{ // 这是一个 dataZoom 组件,可以控制 x 轴或 y 轴的区域缩放
       type: 'inside', // 这里设置为 slider 类型,表示使用滑动条形式的 dataZoom 组件
@@ -113,6 +120,7 @@ const setChartOption3 = async (res) => {
   }).reverse();
   const currentYearData = res.data.map(q=>q.lastQuarterCurrentTotal?.toFixed(0)).reverse();
   const lastYearData = res.data.map(q=>q.lastQuarterLastTotal?.toFixed(0)).reverse();
+  const lastLastYearData = res.data.map(q=>q.lastLastQuarterLastTotal?.toFixed(0)).reverse();
   const chart = echarts.init(echartsRef3.value);
   chart.setOption({
     title: {
@@ -125,7 +133,7 @@ const setChartOption3 = async (res) => {
       }
     },
     legend: {
-      data: [lastYear.toString(),currentYear.toString()]
+      data: [lastLastYear.toString(),lastYear.toString(),currentYear.toString()]
     },
     grid: {
       left: '3%',
@@ -142,6 +150,11 @@ const setChartOption3 = async (res) => {
       data: names
     },
     series: [
+      {
+        name: lastLastYear.toString(),
+        type: 'bar',
+        data: lastLastYearData,
+      },
       {
         name: lastYear.toString(),
         type: 'bar',
@@ -151,7 +164,7 @@ const setChartOption3 = async (res) => {
         name: currentYear.toString(),
         type: 'bar',
         data: currentYearData
-      }
+      },
     ],
     dataZoom: [{ // 这是一个 dataZoom 组件,可以控制 x 轴或 y 轴的区域缩放
       type: 'inside', // 这里设置为 slider 类型,表示使用滑动条形式的 dataZoom 组件
@@ -175,6 +188,7 @@ const setChartOption4 = async (res) => {
   }).reverse();
   const currentYearData = res.data.map(q=>q.lastQuarterCurrentTotal?.toFixed(0)).reverse();
   const lastYearData = res.data.map(q=>q.lastQuarterLastTotal?.toFixed(0)).reverse();
+  const lastLastYearData = res.data.map(q=>q.lastLastQuarterLastTotal?.toFixed(0)).reverse();
   const chart = echarts.init(echartsRef4.value);
   chart.setOption({
     title: {
@@ -187,7 +201,7 @@ const setChartOption4 = async (res) => {
       }
     },
     legend: {
-      data: [lastYear.toString(),currentYear.toString()]
+      data: [lastLastYear.toString(),lastYear.toString(),currentYear.toString()]
     },
     grid: {
       left: '3%',
@@ -204,6 +218,11 @@ const setChartOption4 = async (res) => {
       data: names
     },
     series: [
+      {
+        name: lastLastYear.toString(),
+        type: 'bar',
+        data: lastLastYearData,
+      },
       {
         name: lastYear.toString(),
         type: 'bar',
@@ -213,7 +232,7 @@ const setChartOption4 = async (res) => {
         name: currentYear.toString(),
         type: 'bar',
         data: currentYearData
-      }
+      },
     ],
     dataZoom: [{ // 这是一个 dataZoom 组件,可以控制 x 轴或 y 轴的区域缩放
       type: 'inside', // 这里设置为 slider 类型,表示使用滑动条形式的 dataZoom 组件
@@ -236,10 +255,11 @@ const setChartOption5 = async (res) => {
     return q.enterpriseName+str;
   }).reverse();
   const currentYearData = res.data.map(q=>q.lastQuarterCurrentTotal?.toFixed(0)).reverse();
-  if(currentYearData[0] == null || currentYearData == undefined || currentYearData[0] == 0){
-    isForbidden.value = true;
-  }
+  // if(currentYearData[0] == null || currentYearData == undefined || currentYearData[0] == 0){
+  //   isForbidden.value = true;
+  // }
   const lastYearData = res.data.map(q=>q.lastQuarterLastTotal?.toFixed(0)).reverse();
+  const lastLastYearData = res.data.map(q=>q.lastLastQuarterLastTotal?.toFixed(0)).reverse();
   const chart = echarts.init(echartsRef5.value);
   chart.setOption({
     title: {
@@ -252,7 +272,7 @@ const setChartOption5 = async (res) => {
       }
     },
     legend: {
-      data: [lastYear.toString(),currentYear.toString()]
+      data: [lastLastYear.toString(),lastYear.toString(),currentYear.toString()]
     },
     grid: {
       left: '3%',
@@ -269,6 +289,11 @@ const setChartOption5 = async (res) => {
       data: names
     },
     series: [
+      {
+        name: lastLastYear.toString(),
+        type: 'bar',
+        data: lastLastYearData,
+      },
       {
         name: lastYear.toString(),
         type: 'bar',
@@ -278,7 +303,7 @@ const setChartOption5 = async (res) => {
         name: currentYear.toString(),
         type: 'bar',
         data: currentYearData
-      }
+      },
     ],
     dataZoom: [{ // 这是一个 dataZoom 组件,可以控制 x 轴或 y 轴的区域缩放
       type: 'inside', // 这里设置为 slider 类型,表示使用滑动条形式的 dataZoom 组件
@@ -302,6 +327,7 @@ const setChartOption2 = async (res) => {
   }).reverse();
   const currentYearTotalData = res.data.map(q=>q.currentYearTotal?.toFixed(0)).reverse();
   const lastYearTotalData = res.data.map(q=>q.lastYearTotal?.toFixed(0)).reverse();
+  const lastLastYearTotalData = res.data.map(q=>q.lastLastYearTotal?.toFixed(0)).reverse();
   const chart = echarts.init(echartsRef2.value);
   chart.setOption({
     title: {
@@ -327,7 +353,7 @@ const setChartOption2 = async (res) => {
       '#c4ccd3'
     ],
     legend: {
-      data: [lastYear.toString(),currentYear.toString()]
+      data: [lastLastYear.toString(),lastYear.toString(),currentYear.toString()]
     },
     grid: {
       left: '3%',
@@ -344,7 +370,11 @@ const setChartOption2 = async (res) => {
       data: names
     },
     series: [
-
+      {
+        name: lastLastYear.toString(),
+        type: 'bar',
+        data: lastLastYearTotalData
+      },
       {
         name: lastYear.toString(),
         type: 'bar',
@@ -354,7 +384,7 @@ const setChartOption2 = async (res) => {
         name: currentYear.toString(),
         type: 'bar',
         data: currentYearTotalData
-      }
+      },
     ],
     dataZoom: [{ // 这是一个 dataZoom 组件,可以控制 x 轴或 y 轴的区域缩放
       type: 'inside', // 这里设置为 slider 类型,表示使用滑动条形式的 dataZoom 组件

+ 59 - 24
src/views/BusDynamics/czjsqy/index.vue

@@ -34,12 +34,14 @@ const echartsRef5 = ref(null);
 const isForbidden = ref(false);
 const currentYear = new Date().getFullYear();
 const lastYear = currentYear - 1;
+const lastLastYear = lastYear - 1;
 const setChartOption1 = async (res) => {
   if(res.code != 200) ElMessage.error(res.msg);
-  const a = res.data.filter(item=>item.lastQuarterCurrentTotal-item.lastQuarterLastTotal<0)
-  const names = a.map(q=>q.enterpriseName+'  同比率'+(((q.lastQuarterCurrentTotal-q.lastQuarterLastTotal)/q.lastQuarterLastTotal)*100).toFixed(2)+'%').reverse();
+  const a = res.data.filter(item=>item.lastQuarterLastTotal-item.lastLastQuarterLastTotal<0)
+  const names = a.map(q=>q.enterpriseName+'  同比率'+(((q.lastQuarterLastTotal-q.lastLastQuarterLastTotal)/q.lastQuarterLastTotal)*100).toFixed(2)+'%').reverse();
   const currentYearData = a.map(q=>q.lastQuarterCurrentTotal?.toFixed(0)).reverse();
   const lastYearData = a.map(q=>q.lastQuarterLastTotal?.toFixed(0)).reverse();
+  const lastLastYearData = a.map(q=>q.lastLastQuarterLastTotal?.toFixed(0)).reverse();
   const chart = echarts.init(echartsRef.value);
   chart.setOption({
     title: {
@@ -52,7 +54,7 @@ const setChartOption1 = async (res) => {
       }
     },
     legend: {
-      data: [lastYear.toString(),currentYear.toString()]
+      data: [lastLastYear.toString(),lastYear.toString(),currentYear.toString()]
     },
     grid: {
       left: '3%',
@@ -69,6 +71,11 @@ const setChartOption1 = async (res) => {
       data: names
     },
     series: [
+      {
+        name: lastLastYear.toString(),
+        type: 'bar',
+        data: lastLastYearData,
+      },
       {
         name: lastYear.toString(),
         type: 'bar',
@@ -78,11 +85,12 @@ const setChartOption1 = async (res) => {
         name: currentYear.toString(),
         type: 'bar',
         data: currentYearData
-      }
+      },
     ],
     color: [
       '#fa8c89',
       '#6bbefa',
+      '#6e58d4'
     ],
     dataZoom: [{ // 这是一个 dataZoom 组件,可以控制 x 轴或 y 轴的区域缩放
       type: 'inside', // 这里设置为 slider 类型,表示使用滑动条形式的 dataZoom 组件
@@ -97,10 +105,11 @@ const setChartOption1 = async (res) => {
 }
 const setChartOption3 = async (res) => {
   if(res.code != 200) ElMessage.error(res.msg);
-  const a = res.data.filter(item=>item.lastQuarterCurrentTotal-item.lastQuarterLastTotal<0)
-  const names = a.map(q=>q.enterpriseName+'  同比率'+(((q.lastQuarterCurrentTotal-q.lastQuarterLastTotal)/q.lastQuarterLastTotal)*100).toFixed(2)+'%').reverse();
+  const a = res.data.filter(item=>item.lastQuarterLastTotal-item.lastLastQuarterLastTotal<0)
+  const names = a.map(q=>q.enterpriseName+'  同比率'+(((q.lastQuarterLastTotal-q.lastLastQuarterLastTotal)/q.lastQuarterLastTotal)*100).toFixed(2)+'%').reverse();
   const currentYearData = a.map(q=>q.lastQuarterCurrentTotal?.toFixed(0)).reverse();
   const lastYearData = a.map(q=>q.lastQuarterLastTotal?.toFixed(0)).reverse();
+  const lastLastYearData = a.map(q=>q.lastLastQuarterLastTotal?.toFixed(0)).reverse();
   const chart = echarts.init(echartsRef3.value);
   chart.setOption({
     title: {
@@ -113,7 +122,7 @@ const setChartOption3 = async (res) => {
       }
     },
     legend: {
-      data: [lastYear.toString(),currentYear.toString()]
+      data: [lastLastYear.toString(),lastYear.toString(),currentYear.toString()]
     },
     grid: {
       left: '3%',
@@ -130,6 +139,11 @@ const setChartOption3 = async (res) => {
       data: names
     },
     series: [
+      {
+        name: lastLastYear.toString(),
+        type: 'bar',
+        data: lastLastYearData,
+      },
       {
         name: lastYear.toString(),
         type: 'bar',
@@ -139,11 +153,12 @@ const setChartOption3 = async (res) => {
         name: currentYear.toString(),
         type: 'bar',
         data: currentYearData
-      }
+      },
     ],
     color: [
       '#fa8c89',
       '#6bbefa',
+      '#6e58d4'
     ],
     dataZoom: [{ // 这是一个 dataZoom 组件,可以控制 x 轴或 y 轴的区域缩放
       type: 'inside', // 这里设置为 slider 类型,表示使用滑动条形式的 dataZoom 组件
@@ -158,10 +173,11 @@ const setChartOption3 = async (res) => {
 }
 const setChartOption4 = async (res) => {
   if(res.code != 200) ElMessage.error(res.msg);
-  const a = res.data.filter(item=>item.lastQuarterCurrentTotal-item.lastQuarterLastTotal<0)
-  const names = a.map(q=>q.enterpriseName+'  同比率'+(((q.lastQuarterCurrentTotal-q.lastQuarterLastTotal)/q.lastQuarterLastTotal)*100).toFixed(2)+'%').reverse();
+  const a = res.data.filter(item=>item.lastQuarterLastTotal-item.lastLastQuarterLastTotal<0)
+  const names = a.map(q=>q.enterpriseName+'  同比率'+(((q.lastQuarterLastTotal-q.lastLastQuarterLastTotal)/q.lastQuarterLastTotal)*100).toFixed(2)+'%').reverse();
   const currentYearData = a.map(q=>q.lastQuarterCurrentTotal?.toFixed(0)).reverse();
   const lastYearData = a.map(q=>q.lastQuarterLastTotal?.toFixed(0)).reverse();
+  const lastLastYearData = a.map(q=>q.lastLastQuarterLastTotal?.toFixed(0)).reverse();
   const chart = echarts.init(echartsRef4.value);
   chart.setOption({
     title: {
@@ -174,7 +190,7 @@ const setChartOption4 = async (res) => {
       }
     },
     legend: {
-      data: [lastYear.toString(),currentYear.toString()]
+      data: [lastLastYear.toString(),lastYear.toString(),currentYear.toString()]
     },
     grid: {
       left: '3%',
@@ -191,6 +207,11 @@ const setChartOption4 = async (res) => {
       data: names
     },
     series: [
+      {
+        name: lastLastYear.toString(),
+        type: 'bar',
+        data: lastLastYearData,
+      },
       {
         name: lastYear.toString(),
         type: 'bar',
@@ -200,11 +221,12 @@ const setChartOption4 = async (res) => {
         name: currentYear.toString(),
         type: 'bar',
         data: currentYearData
-      }
+      },
     ],
     color: [
       '#fa8c89',
       '#6bbefa',
+      '#6e58d4'
     ],
     dataZoom: [{ // 这是一个 dataZoom 组件,可以控制 x 轴或 y 轴的区域缩放
       type: 'inside', // 这里设置为 slider 类型,表示使用滑动条形式的 dataZoom 组件
@@ -219,13 +241,14 @@ const setChartOption4 = async (res) => {
 }
 const setChartOption5 = async (res) => {
   if(res.code != 200) ElMessage.error(res.msg);
-  const a = res.data.filter(item=>item.lastQuarterCurrentTotal-item.lastQuarterLastTotal<0)
-  const names = a.map(q=>q.enterpriseName+'  同比率'+(((q.lastQuarterCurrentTotal-q.lastQuarterLastTotal)/q.lastQuarterLastTotal)*100).toFixed(2)+'%').reverse();
+  const a = res.data.filter(item=>item.lastQuarterLastTotal-item.lastLastQuarterLastTotal<0)
+  const names = a.map(q=>q.enterpriseName+'  同比率'+(((q.lastQuarterLastTotal-q.lastLastQuarterLastTotal)/q.lastQuarterLastTotal)*100).toFixed(2)+'%').reverse();
   const currentYearData = a.map(q=>q.lastQuarterCurrentTotal?.toFixed(0)).reverse();
-  if(currentYearData[0] == null || currentYearData == undefined || currentYearData[0] == 0){
-    isForbidden.value = true;
-  }
+  // if(currentYearData[0] == null || currentYearData == undefined || currentYearData[0] == 0){
+  //   isForbidden.value = true;
+  // }
   const lastYearData = a.map(q=>q.lastQuarterLastTotal?.toFixed(0)).reverse();
+  const lastLastYearData = a.map(q=>q.lastLastQuarterLastTotal?.toFixed(0)).reverse();
   const chart = echarts.init(echartsRef5.value);
   chart.setOption({
     title: {
@@ -238,7 +261,7 @@ const setChartOption5 = async (res) => {
       }
     },
     legend: {
-      data: [lastYear.toString(),currentYear.toString()]
+      data: [lastLastYear.toString(),lastYear.toString(),currentYear.toString()]
     },
     grid: {
       left: '3%',
@@ -255,6 +278,11 @@ const setChartOption5 = async (res) => {
       data: names
     },
     series: [
+      {
+        name: lastLastYear.toString(),
+        type: 'bar',
+        data: lastLastYearData,
+      },
       {
         name: lastYear.toString(),
         type: 'bar',
@@ -264,11 +292,12 @@ const setChartOption5 = async (res) => {
         name: currentYear.toString(),
         type: 'bar',
         data: currentYearData
-      }
+      },
     ],
     color: [
       '#fa8c89',
       '#6bbefa',
+      '#6e58d4'
     ],
     dataZoom: [{ // 这是一个 dataZoom 组件,可以控制 x 轴或 y 轴的区域缩放
       type: 'inside', // 这里设置为 slider 类型,表示使用滑动条形式的 dataZoom 组件
@@ -283,10 +312,11 @@ const setChartOption5 = async (res) => {
 }
 const setChartOption2 = async (res) => {
   if(res.code != 200) ElMessage.error(res.msg);
-  const a = res.data.filter(item=>item.currentYearTotal-item.lastYearTotal<0)
-  const names = a.map(q=>q.enterpriseName+"  同比率"+(((q.currentYearTotal-q.lastYearTotal)/q.lastYearTotal)*100).toFixed(2)+"%").reverse();
-  const currentYearTotalData = res.data.map(q=>q.currentYearTotal?.toFixed(0)).reverse();
-  const lastYearTotalData = res.data.map(q=>q.lastYearTotal?.toFixed(0)).reverse();
+  const a = res.data.filter(item=>item.lastYearTotal-item.lastLastYearTotal<0)
+  const names = a.map(q=>q.enterpriseName+"  同比率"+(((q.lastYearTotal-q.lastLastYearTotal)/q.lastYearTotal)*100).toFixed(2)+"%").reverse();
+  const currentYearTotalData = a.map(q=>q.currentYearTotal?.toFixed(0)).reverse();
+  const lastYearTotalData = a.map(q=>q.lastYearTotal?.toFixed(0)).reverse();
+  const lastLastYearTotalData = a.map(q=>q.lastLastYearTotal?.toFixed(0)).reverse();
   const chart = echarts.init(echartsRef2.value);
   chart.setOption({
     title: {
@@ -312,7 +342,7 @@ const setChartOption2 = async (res) => {
       '#c4ccd3'
     ],
     legend: {
-      data: [lastYear.toString(),currentYear.toString()]
+      data: [lastLastYear.toString(),lastYear.toString(),currentYear.toString()]
     },
     grid: {
       left: '3%',
@@ -329,6 +359,11 @@ const setChartOption2 = async (res) => {
       data: names
     },
     series: [
+      {
+        name: lastLastYear.toString(),
+        type: 'bar',
+        data: lastLastYearTotalData
+      },
       {
         name: lastYear.toString(),
         type: 'bar',

+ 60 - 25
src/views/BusDynamics/ssjsqy/index.vue

@@ -40,12 +40,14 @@ const echartsRef5 = ref(null);
 const isForbidden = ref(false);
 const currentYear = new Date().getFullYear();
 const lastYear = currentYear - 1;
+const lastLastYear = lastYear - 1;
 const setChartOption1 = async (res) => {
   if (res.code != 200) ElMessage.error(res.msg);
-  const a = res.data.filter(item => item.lastQuarterCurrentTotal - item.lastQuarterLastTotal < 0)
-  const names = a.map(q => q.enterpriseName + '  同比率' + (((q.lastQuarterCurrentTotal - q.lastQuarterLastTotal) / q.lastQuarterLastTotal) * 100).toFixed(2) + '%').reverse();
+  const a = res.data.filter(item => item.lastQuarterLastTotal - item.lastLastQuarterLastTotal < 0)
+  const names = a.map(q => q.enterpriseName + '  同比率' + (((q.lastQuarterLastTotal - q.lastLastQuarterLastTotal) / q.lastLastQuarterLastTotal) * 100).toFixed(2) + '%').reverse();
   const currentYearData = a.map(q => q.lastQuarterCurrentTotal?.toFixed(0)).reverse();
   const lastYearData = a.map(q => q.lastQuarterLastTotal?.toFixed(0)).reverse();
+  const lastLastYearData = a.map(q => q.lastLastQuarterLastTotal?.toFixed(0)).reverse();
   const chart = echarts.init(echartsRef.value);
   chart.setOption({
     title: {
@@ -58,7 +60,7 @@ const setChartOption1 = async (res) => {
       }
     },
     legend: {
-      data: [lastYear.toString(), currentYear.toString()]
+      data: [lastLastYear.toString(),lastYear.toString(),currentYear.toString()]
     },
     grid: {
       left: '3%',
@@ -75,6 +77,11 @@ const setChartOption1 = async (res) => {
       data: names
     },
     series: [
+      {
+        name: lastLastYear.toString(),
+        type: 'bar',
+        data: lastLastYearData,
+      },
       {
         name: lastYear.toString(),
         type: 'bar',
@@ -84,11 +91,12 @@ const setChartOption1 = async (res) => {
         name: currentYear.toString(),
         type: 'bar',
         data: currentYearData
-      }
+      },
     ],
     color: [
       '#fa8c89',
       '#6bbefa',
+      '#6e58d4'
     ],
     dataZoom: [{ // 这是一个 dataZoom 组件,可以控制 x 轴或 y 轴的区域缩放
       type: 'inside', // 这里设置为 slider 类型,表示使用滑动条形式的 dataZoom 组件
@@ -103,10 +111,11 @@ const setChartOption1 = async (res) => {
 }
 const setChartOption3 = async (res) => {
   if (res.code != 200) ElMessage.error(res.msg);
-  const a = res.data.filter(item => item.lastQuarterCurrentTotal - item.lastQuarterLastTotal < 0)
-  const names = a.map(q => q.enterpriseName + '  同比率' + (((q.lastQuarterCurrentTotal - q.lastQuarterLastTotal) / q.lastQuarterLastTotal) * 100).toFixed(2) + '%').reverse();
+  const a = res.data.filter(item => item.lastQuarterLastTotal - item.lastLastQuarterLastTotal < 0)
+  const names = a.map(q => q.enterpriseName + '  同比率' + (((q.lastQuarterLastTotal - q.lastLastQuarterLastTotal) / q.lastLastQuarterLastTotal) * 100).toFixed(2) + '%').reverse();
   const currentYearData = a.map(q => q.lastQuarterCurrentTotal?.toFixed(0)).reverse();
   const lastYearData = a.map(q => q.lastQuarterLastTotal?.toFixed(0)).reverse();
+  const lastLastYearData = a.map(q => q.lastLastQuarterLastTotal?.toFixed(0)).reverse();
   const chart = echarts.init(echartsRef3.value);
   chart.setOption({
     title: {
@@ -119,7 +128,7 @@ const setChartOption3 = async (res) => {
       }
     },
     legend: {
-      data: [lastYear.toString(), currentYear.toString()]
+      data: [lastLastYear.toString(),lastYear.toString(),currentYear.toString()]
     },
     grid: {
       left: '3%',
@@ -136,6 +145,11 @@ const setChartOption3 = async (res) => {
       data: names
     },
     series: [
+      {
+        name: lastLastYear.toString(),
+        type: 'bar',
+        data: lastLastYearData,
+      },
       {
         name: lastYear.toString(),
         type: 'bar',
@@ -145,11 +159,12 @@ const setChartOption3 = async (res) => {
         name: currentYear.toString(),
         type: 'bar',
         data: currentYearData
-      }
+      },
     ],
     color: [
       '#fa8c89',
       '#6bbefa',
+      '#6e58d4'
     ],
     dataZoom: [{ // 这是一个 dataZoom 组件,可以控制 x 轴或 y 轴的区域缩放
       type: 'inside', // 这里设置为 slider 类型,表示使用滑动条形式的 dataZoom 组件
@@ -164,10 +179,11 @@ const setChartOption3 = async (res) => {
 }
 const setChartOption4 = async (res) => {
   if (res.code != 200) ElMessage.error(res.msg);
-  const a = res.data.filter(item => item.lastQuarterCurrentTotal - item.lastQuarterLastTotal < 0)
-  const names = a.map(q => q.enterpriseName + '  同比率' + (((q.lastQuarterCurrentTotal - q.lastQuarterLastTotal) / q.lastQuarterLastTotal) * 100).toFixed(2) + '%').reverse();
+  const a = res.data.filter(item => item.lastQuarterLastTotal - item.lastLastQuarterLastTotal < 0)
+  const names = a.map(q => q.enterpriseName + '  同比率' + (((q.lastQuarterLastTotal - q.lastLastQuarterLastTotal) / q.lastLastQuarterLastTotal) * 100).toFixed(2) + '%').reverse();
   const currentYearData = a.map(q => q.lastQuarterCurrentTotal?.toFixed(0)).reverse();
   const lastYearData = a.map(q => q.lastQuarterLastTotal?.toFixed(0)).reverse();
+  const lastLastYearData = a.map(q => q.lastLastQuarterLastTotal?.toFixed(0)).reverse();
   const chart = echarts.init(echartsRef4.value);
   chart.setOption({
     title: {
@@ -180,7 +196,7 @@ const setChartOption4 = async (res) => {
       }
     },
     legend: {
-      data: [lastYear.toString(), currentYear.toString()]
+      data: [lastLastYear.toString(),lastYear.toString(),currentYear.toString()]
     },
     grid: {
       left: '3%',
@@ -197,6 +213,11 @@ const setChartOption4 = async (res) => {
       data: names
     },
     series: [
+      {
+        name: lastLastYear.toString(),
+        type: 'bar',
+        data: lastLastYearData,
+      },
       {
         name: lastYear.toString(),
         type: 'bar',
@@ -206,11 +227,12 @@ const setChartOption4 = async (res) => {
         name: currentYear.toString(),
         type: 'bar',
         data: currentYearData
-      }
+      },
     ],
     color: [
       '#fa8c89',
       '#6bbefa',
+      '#6e58d4'
     ],
     dataZoom: [{ // 这是一个 dataZoom 组件,可以控制 x 轴或 y 轴的区域缩放
       type: 'inside', // 这里设置为 slider 类型,表示使用滑动条形式的 dataZoom 组件
@@ -225,13 +247,14 @@ const setChartOption4 = async (res) => {
 }
 const setChartOption5 = async (res) => {
   if (res.code != 200) ElMessage.error(res.msg);
-  const a = res.data.filter(item => item.lastQuarterCurrentTotal - item.lastQuarterLastTotal < 0)
-  const names = a.map(q => q.enterpriseName + '  同比率' + (((q.lastQuarterCurrentTotal - q.lastQuarterLastTotal) / q.lastQuarterLastTotal) * 100).toFixed(2) + '%').reverse();
+  const a = res.data.filter(item => item.lastQuarterLastTotal - item.lastLastQuarterLastTotal < 0)
+  const names = a.map(q => q.enterpriseName + '  同比率' + (((q.lastQuarterLastTotal - q.lastLastQuarterLastTotal) / q.lastLastQuarterLastTotal) * 100).toFixed(2) + '%').reverse();
   const currentYearData = a.map(q => q.lastQuarterCurrentTotal?.toFixed(0)).reverse();
-  if(currentYearData[0] == null || currentYearData == undefined || currentYearData[0] == 0){
-    isForbidden.value = true;
-  }
+  // if(currentYearData[0] == null || currentYearData == undefined || currentYearData[0] == 0){
+  //   isForbidden.value = true;
+  // }
   const lastYearData = a.map(q => q.lastQuarterLastTotal?.toFixed(0)).reverse();
+  const lastLastYearData = a.map(q => q.lastLastQuarterLastTotal?.toFixed(0)).reverse();
   const chart = echarts.init(echartsRef5.value);
   chart.setOption({
     title: {
@@ -244,7 +267,7 @@ const setChartOption5 = async (res) => {
       }
     },
     legend: {
-      data: [lastYear.toString(), currentYear.toString()]
+      data: [lastLastYear.toString(),lastYear.toString(),currentYear.toString()]
     },
     grid: {
       left: '3%',
@@ -261,6 +284,11 @@ const setChartOption5 = async (res) => {
       data: names
     },
     series: [
+      {
+        name: lastLastYear.toString(),
+        type: 'bar',
+        data: lastLastYearData,
+      },
       {
         name: lastYear.toString(),
         type: 'bar',
@@ -270,11 +298,12 @@ const setChartOption5 = async (res) => {
         name: currentYear.toString(),
         type: 'bar',
         data: currentYearData
-      }
+      },
     ],
     color: [
       '#fa8c89',
       '#6bbefa',
+      '#6e58d4'
     ],
     dataZoom: [{ // 这是一个 dataZoom 组件,可以控制 x 轴或 y 轴的区域缩放
       type: 'inside', // 这里设置为 slider 类型,表示使用滑动条形式的 dataZoom 组件
@@ -289,10 +318,11 @@ const setChartOption5 = async (res) => {
 }
 const setChartOption2 = async (res) => {
   if (res.code != 200) ElMessage.error(res.msg);
-  const a = res.data.filter(item => item.currentYearTotal - item.lastYearTotal < 0)
-  const names = a.map(q => q.enterpriseName + "  同比率" + (((q.currentYearTotal - q.lastYearTotal) / q.lastYearTotal) * 100).toFixed(2) + "%").reverse();
-  const currentYearTotalData = res.data.map(q => q.currentYearTotal?.toFixed(0)).reverse();
-  const lastYearTotalData = res.data.map(q => q.lastYearTotal?.toFixed(0)).reverse();
+  const a = res.data.filter(item => item.lastYearTotal - item.lastLastYearTotal < 0)
+  const names = a.map(q => q.enterpriseName + "  同比率" + (((q.lastYearTotal - q.lastLastYearTotal) / q.lastLastYearTotal) * 100).toFixed(2) + "%").reverse();
+  const currentYearTotalData = a.map(q => q.currentYearTotal?.toFixed(0)).reverse();
+  const lastYearTotalData = a.map(q => q.lastYearTotal?.toFixed(0)).reverse();
+  const lastLastYearTotalData = a.map(q => q.lastLastYearTotal?.toFixed(0)).reverse();
   const chart = echarts.init(echartsRef2.value);
   chart.setOption({
     title: {
@@ -318,7 +348,7 @@ const setChartOption2 = async (res) => {
       '#c4ccd3'
     ],
     legend: {
-      data: [lastYear.toString(), currentYear.toString()]
+      data: [lastLastYear.toString(),lastYear.toString(),currentYear.toString()]
     },
     grid: {
       left: '3%',
@@ -335,6 +365,11 @@ const setChartOption2 = async (res) => {
       data: names
     },
     series: [
+      {
+        name: lastLastYear.toString(),
+        type: 'bar',
+        data: lastLastYearTotalData
+      },
       {
         name: lastYear.toString(),
         type: 'bar',
@@ -344,7 +379,7 @@ const setChartOption2 = async (res) => {
         name: currentYear.toString(),
         type: 'bar',
         data: currentYearTotalData
-      }
+      },
     ],
     dataZoom: [{ // 这是一个 dataZoom 组件,可以控制 x 轴或 y 轴的区域缩放
       type: 'inside', // 这里设置为 slider 类型,表示使用滑动条形式的 dataZoom 组件

+ 8 - 2
src/views/CCInformation/qysbxx/index.vue

@@ -84,6 +84,11 @@
       <el-table-column label="联系人" align="center" prop="contacts" :show-overflow-tooltip='true'/>
       <el-table-column label="联系方式" align="center" prop="contactInformation" :show-overflow-tooltip='true'/>
       <el-table-column label="上报人身份证号" align="center" prop="complainantIdNumber" :show-overflow-tooltip='true'/>
+      <el-table-column label="上报时间" align="center" prop="createTime" :show-overflow-tooltip='true'>
+        <template #default="scope">
+          {{ parseTime(scope.row.createTime) }}
+        </template>
+      </el-table-column>
       <el-table-column label="操作" align="center">
 <!--        <template #default="scope">-->
 <!--          <el-popover placement="bottom" :width="400" trigger="click">-->
@@ -164,8 +169,9 @@ import {
 import {reactive, ref, toRaw} from "vue";
 import {getToken} from "@/utils/auth";
 import {ElMessage} from "element-plus";
-import {likeQueryMethod} from "@/utils/likeQueryMethod";
+import {likeQueryMethod, likeQueryMethod2} from "@/utils/likeQueryMethod";
 import {downloadFileMethod} from "@/utils/request";
+import {parseTime} from "../../../utils/ruoyi";
 
 const {proxy} = getCurrentInstance();
 const downloadFileList = ref([]);
@@ -245,7 +251,7 @@ const {queryParams, form, rules} = toRefs(data);
 /** 查询官网自主上报列表 */
 function getList() {
   loading.value = true;
-  let toServerObj = likeQueryMethod('unified_social_credit_code', queryParams.value.unifiedSocialCreditCode, queryParams.value.pageNum, queryParams.value.pageSize);
+  let toServerObj = likeQueryMethod2('unified_social_credit_code', queryParams.value.unifiedSocialCreditCode, queryParams.value.pageNum, queryParams.value.pageSize,true);
   listReporting(toServerObj).then(response => {
     reportingList.value = response.records;
     total.value = response.total;

+ 55 - 20
src/views/visualization/index.vue

@@ -222,38 +222,66 @@ const getCurrentQuarter = () => {
   return Math.ceil(month / 3);
 };
 const specialQuarter = computed(() => {
+  let isPassYear = false;
   let a = getCurrentQuarter() - 1;
   if (a == 0) {
-    a = 4
+    a = 4;
+    isPassYear = true;
   }
-  return a;
+  return {
+    quarter: a,
+    isPassYear: isPassYear
+  };
 })
 const specialQuarter2 = computed(() => {
+  let isPassYear = false;
   let a = getCurrentQuarter() - 2;
   if (a == 0) {
     a = 4
+    isPassYear = true;
   } else if (a == -1) {
     a = 3
+    isPassYear = true;
   }
-  return a;
+  return {
+    quarter: a,
+    isPassYear: isPassYear
+  };
 })
 const RanKingData = ref([]);
 const rankImgIconArr = [one, two, three, four, five, six, seven, eight, nine, ten];
 const getTaxTop10 = async () => {
-  let res = await getLastQuarterYoY2(specialQuarter.value);
-  console.log(res, 7777);
+  let res = await getLastQuarterYoY2(specialQuarter.value.quarter);
+  // console.log(specialQuarter.value,111111111);
+  // console.log(specialQuarter2.value,1222222222222);
+  // console.log(res, 7777);
   if (res.code == 200) {
     if (res.data[0].lastQuarterCurrentTotal == 0) {
-      res = await getLastQuarterYoY2(specialQuarter2.value);
+      res = await getLastQuarterYoY2(specialQuarter2.value.quarter);
     }
     res.data = res.data.slice(0, 10);
-    res.data.forEach(w => w.lastQuarterCurrentTotal = (w.lastQuarterCurrentTotal / 1).toFixed(2));
-    res.data.sort((a, b) => b.lastQuarterCurrentTotal - a.lastQuarterCurrentTotal)
-    RanKingData.value = res.data.map((q, index) => ({
-      name: q.enterpriseName,
-      value: q.lastQuarterCurrentTotal,
-      mig: rankImgIconArr[index]
-    }))
+    if(!specialQuarter.value.isPassYear && !specialQuarter2.value.isPassYear){
+      res.data.forEach(w => w.lastQuarterCurrentTotal = (w.lastQuarterCurrentTotal / 1).toFixed(2));
+      res.data.sort((a, b) => b.lastQuarterCurrentTotal - a.lastQuarterCurrentTotal)
+      RanKingData.value = res.data.map((q, index) => {
+        // console.log(q);
+        return ({
+          name: q.enterpriseName,
+          value: q.lastQuarterCurrentTotal,
+          mig: rankImgIconArr[index]
+        })
+      })
+    }else {
+      res.data.forEach(w => w.lastQuarterLastTotal = (w.lastQuarterLastTotal / 1).toFixed(2));
+      res.data.sort((a, b) => b.lastQuarterLastTotal - a.lastQuarterLastTotal)
+      RanKingData.value = res.data.map((q, index) => {
+        return ({
+          name: q.enterpriseName,
+          value: q.lastQuarterLastTotal,
+          mig: rankImgIconArr[index]
+        })
+      })
+    }
   }
 }
 getTaxTop10();
@@ -650,17 +678,25 @@ const business = reactive([{
 /** 查询社保 */
 function obtaingetSocialSecurity() {
   getSocialSecurity().then((res) => {
-    res.data = res.data.filter(q => q.remarks.includes(currentYear.value));
-    business[1].value = res.data.length;
-    business[1].ratio = (res.data.length / companyNumber.value * 100).toFixed(2) + '%';
+    let t;
+    t = res.data.filter(q => q.remarks.includes(currentYear.value));
+    if(t.length == 0){
+      console.log("社保暂时没数据取上一年的")
+      t = res.data.filter(q => q.remarks.includes(lastYear.value));
+    }
+    business[1].value = t.length;
+    business[1].ratio = (t.length / companyNumber.value * 100).toFixed(2) + '%';
   })
   getTaxes().then((res) => {
+    // console.log(res,12312321);
     let result;
     let a;
     if (res) {
-      a = res.filter(q => {
-        return q.annualAmount == currentYear.value
-      })
+      a = res.filter(q => q.annualAmount == currentYear.value);
+      if(a.length == 0){
+        console.log("税暂时没数据取上一年的")
+        a = res.filter(q => q.annualAmount == lastYear.value);
+      }
       if (a.length > 0) {
         result = a.length / companyNumber.value * 100;
       } else {
@@ -669,7 +705,6 @@ function obtaingetSocialSecurity() {
     }
     business[0].value = a.length
     business[0].ratio = result.toFixed(2) + '%'
-
   })
 }
 

+ 1 - 1
vite.config.js

@@ -8,7 +8,7 @@ import * as fs from "node:fs";
 let dev = {
   // shaoyang: `http://42.48.99.5:20002`
   // shaoyang: `http://192.168.110.235:20002`
-  shaoyang: `http://192.168.110.13:20002`
+  shaoyang: `http://localhost:20002`
 }
     export default defineConfig(({ mode, command }) => {
       const env = loadEnv(mode, process.cwd())